将变量从一个视图传递到另一个视图 - Laravel 5.1

时间:2015-08-05 00:28:03

标签: php html laravel laravel-5.1

在回答了我之前的问题之后,我复制了最顶层答案所说的所有内容,但对我而言,这对我来说非常有效。

我想在我的主页(Writer& Reader)上放两个按钮,这些按钮会将它们引导到注册页面并将该专业作为隐藏字段放在表单中。

我的主页:

    {!! Form::open(['route' => ['writer_path']]) !!}
    {!! Form::hidden('profession', 'writer') !!}
    {!! Form::submit('Writer', array('class' => 'btn btn-warning')) !!}
    {!! Form::close() !!}

我的routes.php

   Route::post('auth/register', [
     'as' => 'writer_path',
     'uses' => 'ProfessionController@displayForm'
   ]);

ProfessionController.php

   class ProfessionController extends Controller
    {
      //
   public function displayForm()
   {
    $input = Input::get();
    $profession = $input['profession'];
    return view('auth/register', ['profession' => $profession]);
   }
}

当我点击按钮时没有任何反应。当我查看开发者工具>网络,在我点击按钮之前,注册似乎并不是当我点击它出现但它不会指示我到任何地方。

当注册到达时,它还会在时间戳和initiator = Other中显示一个长条。当我点击注册然后,Preview它会显示Failed to load response data。你有什么想法吗?

修改

  • 我使用的是Laravel 5.1 + Laravel Collective

源代码:

 <form method="POST" action="http://app.com/auth/register" accept-charset="UTF-8"><input name="_token" type="hidden" value="qq1exVYYTrmuRBrj62HGgOxJWidUK770lF5Wv1qH">
 <input name="profession" type="hidden" value="writer">
 <input class="btn btn-warning" type="submit" value="Writer">
 </form>
  • 点击Chrome开发者工具&gt;来源&gt;来源&gt; auth/register,我收到了一个错误(只有一次。其他时间没有在Sources下显示注册):
   /home/vagrant/Code/Laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php第53行中的TokenMismatchException:

编辑2:

2 个答案:

答案 0 :(得分:2)

这里有几件事情。

除了我刚才在评论中提到的内容 (您正在注册两条在同一路径下执行不同操作的路由,即

Route::post('auth/register', [
'as' => 'writer_path',
'uses' => 'ProfessionController@displayForm'
 ]);

Route::post('auth/register', 'Auth\AuthController@postRegister');

) 它们共存于相同的routes.php文件中,如果网址相同,则可能存在冲突

另外,你的

public function displayForm()
{
    $input = Input::get();
    $profession = $input['profession'];
    return view('auth/register', ['profession' => $profession]);
}

作为视图,路线返回,而不是像指示中那样命名的路线:

public function displayForm()
{
$input = Input::get();
$profession = $input['profession'];
return view('writerregistration', ['profession' => $profession]);

}

正如我所说,这应该引导您进入一个视图,您将在一个名为writerregistration.blade.php的文件中创建,您应该将代码放在我在答案底部传递的表单中:

Laravel Passing Data From One View to Another View

答案 1 :(得分:1)

尝试将'method'添加到Form :: open

{!! Form::open(['route' => ['writer_path'], 'method' => 'POST']) !!}

并在控制器上的“输入”上使用'\'

$input = \Input::get();