【问题标题】:Laravel 4 form post issueLaravel 4 表单发布问题
【发布时间】:2014-09-23 13:10:26
【问题描述】:

我的问题是,当我提交表单时,它会通过 get 方法。 工作流程是表单提交 -> 获取 -> 发布,它应该是表单提交 -> 发布。 我需要在我的 get 方法中有一个条件来验证 de 数组不为空

我的代码: 路线

    Route::get('/pre-register-birth',array('as'=>'pre-register-birth', 'uses'=>'UserController@preRegisterBirthData'));
    Route::post('/pre-register-birth', 'UserController@preRegisterBirthDataPost');

查看

    {{ Form::open(array('method' => 'POST', 'action' =>  'UserController@preRegisterBirthDataPost',
        'class'=>'form-horizontal', 'id'=>'regist-form')) }}

控制器

    public function preRegisterBirthData()
{
    $user = Session::get('user');

    if ($user)
        return View::make('user/pre-register-birth')->with('tempUser', $user);
    else
        return Redirect::Route('pre-register-get');
}

public function preRegisterBirthDataPost()
{
    $validator = Validator::make(Input::all(),
        array(
            'birthplace' => 'required|max:100',
            'birthdate' => 'required|max:100|date|date_format:Y-m-d'
        )
    );
    if ($validator->fails()) {
        return Redirect::Route('pre-register-birth')
            ->withErrors($validator)
            ->withInput();
    } else {
        $user = array(
            'email' => Input::get('email'),
            'pass' => Input::get('pass'),
            'name' => Input::get('name'),
            'surname' => Input::get('surname'),
            'birthplace' => Input::get('birthplace'),
            'birthdate' => Input::get('birthdate'),
            'hourKnow' => Input::get('hourKnow'),
            'dataCorrect' => Input::get('dataCorrect'),
            'news' => Input::get('news'),
        );
        return Redirect::Route('pre-register-terms')->with('user', $user);
    }
}

【问题讨论】:

  • 请您也添加您生成的 HTML 吗? (在浏览器中查看源代码时的 HTML)
  • 将表单中的action 更改为/pre-register-birth Laravel 将处理它的 post 请求,查看您的路由,然后将其发送到您想要的控制器方法。你有什么理由不使用标准的 Laravel 控制器方法和设置?
  • 您的解决方案不起作用,您的标准 Laravel 控制器方法和设置是什么意思。
  • 通常你的路由和你的控制器方法有关,你的方法和你的HTTP请求方法有关。例如,UserController 上的getIndexpostIndex 将具有/user 的路由。你看过Laracast videos吗?可能有用。

标签: php forms post laravel


【解决方案1】:

我想我以前见过这个问题。 Laravel 出于任何奇怪的原因不喜欢 action => ... 所以,将你的表单声明从 a 更改为 b:

// A
{{ Form::open(array('method' => 'POST', 'action' =>  'UserController@preRegisterBirthDataPost',
    'class'=>'form-horizontal', 'id'=>'regist-form')) }}

// B
{{ Form::open(array('method' => 'POST', 'url' =>  'pre-register-birth',
    'class'=>'form-horizontal', 'id'=>'regist-form')) }}

请注意,我将 action => ... 更改为 url => ... 这是一个很小的更改,但它可能会解决它。但是,您可能需要添加:

Route::post('/pre-register-birth', array('as'=> 'pre-register-birth', 'uses' => 'UserController@preRegisterBirthDataPost'));

所以它可以识别命名路由。

希望这会有所帮助!

【讨论】:

  • 您好,很抱歉,问题出在 post 方法中。 if 重定向没有传递用户参数,并使 get 方法总是转到 else。
猜你喜欢
  • 2013-07-04
  • 2013-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-06
  • 2014-06-08
相关资源
最近更新 更多