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


Laravel Passing Data From One View to Another View

我正在考虑从主页制作一个登录页,它将引导访客进入注册页面。我想在其中制作两个发送数据的表单和两个提交按钮,比如读写器和写入器,根据它们用于进入注册表单页面的按钮,我想从登录页的按钮传递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。但当我直接键入链接时,它就起作用了。

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

(使用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');
});

并且CCD_ 7正在工作。

下面是一个关于如何实现它的分步演练。我对它进行了测试。因此它可以工作。这是为"作家"准备的,但你可以像最初为其他职业计划的那样复制它。

我想你已经注册了Laravel Collective包,因为你使用的是大括号和感叹号。

步骤1:

在您的登录页视图中,在您有编写器按钮的位置,添加一个带有字符串"编写器"的隐藏字段。像这样:

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

并不是说在开放字段中,我们使用的是命名路由("writer _path"(。

步骤2:

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

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

步骤3:

在示例控制器中,定义displayForm方法。在该方法中,您首先获得从登录页视图传递的值。

如果你不知道如何创建一个控制器,你可以做

php artisan make:controller SampleController

从命令行

因为值是以数组的形式到达的,所以必须从数组中获取字符串"writer",然后将其传递给新视图(带有writer注册表单的视图(。

<?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的新视图中,您将显示带有刚刚传递的字段("prosession"(的表单,该字段包含字符串"writer"。像这样:

{!! 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,您已经用登录页中属于写入程序按钮的隐藏字段信息填充了写入程序注册表中的字段。