Laravel将数据从一个视图传递到另一个视图

时间:2015-07-31 22:49:51

标签: php html laravel laravel-5

我正在考虑从主页创建一个登陆页面,它将把访客引导到注册页面。我想要制作两个表格来发送数据和两个提交按钮,让我们说读者和作者,根据他们用来进入注册表单页面的按钮,我想从按钮传递profession字符串在着陆页中,然后将其放入/auth/register中的注册表单。

    {!! Form::open(array('url' => '/auth/register', 'profession' => 'writer')) !!}

    {!! Form::submit('Writer', array('class' => 'btn btn-warning')) !!}

    {!! Form::close() !!}


    {!! Form::open(array('url' => '/auth/register', 'profession' => 'reader')) !!}

    {!! Form::submit('Reader', array('class' => 'btn btn-default')) !!}

    {!! Form::close() !!}

它没有引导我访问页面app.com/auth/register。但是当我直接输入链接时它就可以工作。

我认为在$profession中使用/auth/register/并访问该值并将其用作注册表单中的隐藏字段。

(使用laravel 5.1)

修改

在视图来源中:

    <form method="POST" action="http://app.com/auth/register" accept-charset="UTF-8" profession="writer"><input name="_token" type="hidden" value="dZXQsNI1BGQ39JjDLFUEkSQzL5bTNwe8o3rpiSQL">

    <input class="btn btn-warning" type="submit" value="Writer">

    </form>


    <form method="POST" action="http://app.com/auth/register" accept-charset="UTF-8" profession="reader"><input name="_token" type="hidden" value="dZXQsNI1BGQ39JjDLFUEkSQzL5bTNwe8o3rpiSQL">

    <input class="btn btn-default" type="submit" value="Reader">

    </form>

编辑2:

    {!! Form::open(array('url' => '/auth/register', 'profession' => 'writer')) !!}

    {!! link_to('/auth/register', 'Writer', array('class' => 'btn btn-default')) !!}

    {!! Form::close() !!}

我尝试了这个。至少,现在它正在指导页面,但我仍然无法访问profession

的数据值

编辑3:

路线:

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

Route::get('/', function()
{
    return view('pages.home');
});

https://app.com/auth/register正在发挥作用。

1 个答案:

答案 0 :(得分:3)

这是一个关于如何实现它的一步一步的演练。我测试了它。所以它有效。这是针对“作家”的,但您可以像原先为其他专业计划一样复制它。

我认为您已经注册了Laravel Collective软件包,因为您正在使用花括号和感叹号。

第1步:

在目标网页视图中,您有编写器按钮,添加一个隐藏字段,其中包含字符串&#39; writer&#39;。像这样:

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

在开放领域,我们并没有使用命名路线(&#39; writer_path&#39;)。

第2步:

在routes.php文件中注册路由和控制器,如下所示:

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

第3步:

在样本控制器中,定义displayForm方法。 在该方法中,您首先获得从着陆页视图传递的值。

如果您不知道如何创建控制器,则可以

php artisan make:controller SampleController

从命令行

因为值以数组形式到达,所以你必须获得字符串&#39; writer&#39;从数组中,然后将其传递给新视图(具有编写器的注册表单的视图)。

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Input;

class SampleController extends Controller
{
/**
 * Display a listing of the resource.
 *
 * @return Response
 */
public function displayForm()
{
    $input = Input::get();
    $profession = $input['profession'];
    return view('writerregistration', ['profession' => $profession]);
}

}

最后一步:

在您将创建为writerregistration.blade.php的新视图中,您将显示包含您刚刚传递的字段(&#39; profession&#39;)的表单,其中包含字符串&#39; writer&#39; ;。像这样:

{!! Form::open() !!}

{!! Form::label('username', 'Username:') !!}
{!! Form::text('username', null, ['class' => 'form-control']) !!}

{!! Form::label('profession', 'Profession:') !!}
{!! Form::text('profession', $profession, ['class' => 'form-control']) !!}

{!! Form::label('email', 'Email:') !!}
{!! Form::text('email', null, ['class' => 'form-control']) !!}

{!! Form::label('passowrd', 'Password:') !!}
{!! Form::password('password', ['class' => 'form-control']) !!}  

{!! Form::label('password_confirmation', 'Password Confirmation:') !!}
{!! Form::password('password_confirmation', ['class' => 'form-control']) !!}

{!! Form::submit('Sign Up', ['class' => 'btn btn-primary']) !!}

{!! Form::close() !!}

Presto,您已在作者的注册表单中填写了该字段,其中隐藏字段的信息属于着陆页中的编写者按钮。