我想在主页中创建两个按钮buyer
和seller
,点击这些按钮,我希望访客能够获得带有〜隐藏输入的定向注册页面〜表格取决于按下的按钮的值。
我正在使用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>
修改
我想我无法在视图之间发送变量。那么我需要注册一个全新的路由和一个控制器,还有两个方法吗?我在这个舞台上真的很困惑。
答案 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);
}