在视图之间传递字符串 - Laravel 5.1

时间:2015-08-01 11:41:28

标签: php html laravel

我想在主页中创建两个按钮buyerseller,点击这些按钮,我希望访客能够获得带有〜隐藏输入的定向注册页面〜表格取决于按下的按钮的值。

我正在使用Laravel 5.1

对于我想要实现的目标,我是否需要注册新路由和新功能?

首先,我是否需要使用{!! link_to !!}{!! Form submit !!}。我认为表单提交会起作用:

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

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

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

我的路线是:

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

auth / register和AuthController是Laravel默认的附件。我也没有注册新的公共职能。这是什么原因?我是否需要将数据从视图发送到控制器,然后再发送其他视图(view-> controller->视图)。我真的很困惑这个。

这就是它在 view-source 中的表现:

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

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

</form>

修改

我想我无法在视图之间发送变量。那么我需要注册一个全新的路由和一个控制器,还有两个方法吗?我在这个舞台上真的很困惑。

3 个答案:

答案 0 :(得分:1)

有关实施的详细信息,请查看我之前类似问题的答案:

Laravel Passing Data From One View to Another View

回答你提出的问题

您可以使用两种形式,一种用于买方,一种用于卖方

{!! Form::open(['route' => ['type_path']]) !!}
{!! Form::hidden('type', 'buyer') !!}
{!! Form::submit('Buyer', array('class' => 'btn btn-warning')) !!}
{!! Form::close() !!

{!! Form::open(['route' => ['type_path']]) !!}
{!! Form::hidden('type', 'seller') !!}
{!! Form::submit('Seller', array('class' => 'btn btn-warning')) !!}
{!! Form::close() !!
在您的目标网页上

然后将这两种表单直接指向相同的指定路线(在这种情况下&#39; type_path&#39;)

然后在routes.php文件中,您只能引用一个控制器和一个方法,并处理该方法中的逻辑。再次看到我的答案的链接,以查看作者和读者的例子的完整实现。

基本上如您所说,您将作为隐藏输入从视图发送到控制器到第二个视图。

答案 1 :(得分:0)

您可以注册一条新路线,如:

Route::get('auth/{TYPE}/register', 'Auth\AuthController@getRegisterType')

您的主页会有这样的内容:

    <a href="www.app.com/auth/seller/register">seller</a>

你的控制器方法是这样的:

public function getRegisterType($type)
{
  Session::put('registerType', $type);
  return redirect('/auth/register');
}

然后你可以从控制器方法getRegister&amp;中访问你设置的会话变量。 postRegister

答案 2 :(得分:0)

您是否有两个按钮指向带有查询字符串参数的注册页面:

<a href="/auth/register?type=buyer">Buyer</a>
<a href="/auth/register?type=seller">Seller</a>

然后只需检查 register.blade.php 视图中的查询字符串参数:

{!! Form::hidden('account_type', Request::query('type')) !!}

如果您需要验证其中一个是否存在,那么您可以创建仅应用于登录路由的中间件类:

public function handle($request, Closure $next)
{
    if (! in_array($request->query('type'), ['buyer', 'seller'])) {
        // Error
    }

    return $next($request);
}