2016-09-01 13 views
1

PHPをバックエンドとして使用してReact + Reduxアプリケーションを構築しています。私はそうのような単純なログインフォームを持っている:反応/還元フォームを送信するときにPHPのPOST値を取得できません

import React, {Component} from 'react'; 
import {reduxForm} from 'redux-form'; 
import {loginUser} from '../actions/index'; 

class LoginForm extends Component { 

    render() { 
     const {fields: {username, password}, handleSubmit} = this.props; 
     return (
      <form onSubmit={handleSubmit(this.props.loginUser)}> 
       <input 
        type="string" 
        placeholder="username" 
        {...username} 
       /> 
       <input 
        type="password" 
        placeholder="password" 
        {...password} 
       /> 
       <input 
        type="submit" 
       /> 
      </form> 
     ); 
    } 
} 

export default reduxForm({ 
    form: 'Login', 
    fields:['username', 'password'] 
}, null, {loginUser})(LoginForm); 

私は、フォームデータの処理を管理するためにredux-formを使用しています。

export function loginUser(props) { 
    console.log('props', props); 
    const request = axios.post(LOGIN_PAGE, props); 
    return { 
     type: LOGIN_USER, 
     payload: request 
    } 
} 

console.logが正しくログインフォームからのすべてのデータが表示されますので、ように私はPHPのバックエンドにデータを投稿する(アクションの作成者を)loginFormを使用しています。ここで

は私のPHPのバックエンドである:ここで

if (!is_user_logged_in()) { 
    $username = $_POST['username']; 
    $username = $username . 'test'; 
    $password = $_GET['password']; 
    $response = array(
     'username' => $username 
    ); 
    wp_send_json($response); 
} 

は、関連する減速機である:

export default function(state = INITIAL_STATE, action) { 
    switch(action.type) { 
     case LOGIN_USER: 
      console.log('reducer', action.payload.data); 
      return { 
       ...state, 
       statusCode:action.payload.data, 
       user:action.payload.data 
      } 
    } 
    return state; 
} 

私はaction.payload.dataにログインすると、私は{ユーザー名: '試験'}を得るため、その私のバックエンドを示し、私のフォームからデータを取得していません。私。 usernameをabcと入力すると、テストとは対照的に、abctestに戻るはずです。

どこが間違っていますか?

答えて

0

この質問を完全に忘れました!

フォームはここで、バックエンドにJSONを送信して、それを取得する方法である:私は従うことを確認していない

$inputJSON = file_get_contents('php://input'); 
$input = json_decode($inputJSON, TRUE); //convert JSON into array 
$username = $input['username']; 
1

フォーム提出にはGETメソッドが使用されているようです。そのため、$_POST['username']の結果はnullになります。したがって、方法POSTを使用し、の代わりに$_POST['password']からパスワードを取得する必要があります。

+0

、私は自分のフォームに ''メソッドは=「POST」を追加し、 '$を変更_GET ['password'] 'を' $ _POST ['password'] 'に書きますが、私はまだ同じ問題を抱えています。 – Frosty619

+0

あなたはvar_dump($ _REQUEST)を投稿できますか?フォーム提出後? @ Frosty619 –

+0

私は、空の配列を返します。これは、 'LOGIN_PAGE'が正しいURLであるため、本当に混乱します。 – Frosty619