我试图找到正确的方法,用laravel来解释这个问题,这样我就可以选择一个GET路径,它调用一个函数,但是在这个函数中,我想使用mysql表中的数据来确定要显示哪个刀片。
假设使用查询字符串参数访问此URL:
www.testsite.com?email=testEmail.com我选择了这个路径(但不确定如何接受这个参数)
Route::get('register', 'Data\DataController@DataForm')
->name('Data.register');我有一个名为dataTable的mysql表,设置如下
email | type
-------------------------
test1@mail.com A
test2@mail.com B
test3@mail.com C合并电子邮件参数的最佳方法是什么,这样我就可以点击单个路由和单个函数,然后使用mysql中的电子邮件/类型列来确定要显示的合适的刀片?
public function DataForm(Request $request)
{
//query table based on query string parameter 'email'
$email = dataTable::where('email', /*email parameter?*/)->first();
if($email['type']== A){
return view('data.typeA');
}elseif($email['type']== B){
return view('data.typeB');
}elseif($email['type']== C){
return view('data.typeC');
}
}发布于 2019-02-18 21:48:36
您可以将其添加为路由参数:
Route::get('register/{email}', 'Data\DataController@DataForm')->name('Data.register');然后在控制器内部:
public function DataForm($email)
{
// Abort to 404 if $email is not a valid email address
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
abort(404);
}
$typeData = Model::where('email', $email)->first();
// Email not found in the database
if(!$typeData){
abort(404);
}
switch ($typeData->type) {
case 'A':
return view('data.typeA');
case 'B':
return view('data.typeB');
case 'C':
return view('data.typeAC');
default:
abort(404);
}
}发布于 2019-02-18 19:46:33
使用路径中的斜杠,您应该能够像这样传递它:
Route::get('register/{email}', 'Data\DataController@DataForm')
->name('Data.register');然后,在您的函数中,您只需使用变量$email,它就会在URL中包含电子邮件。但是不确定这个URL是否正常,在传递参数时使用斜杠而不是'?email=‘。
这里有更多的内容:
发布于 2019-02-18 20:00:24
显然,你需要更多的逻辑:
public function DataForm(Request $request)
{
$type = (dataTable::where('email', $request->query->get('email'))->first())['type'];
return view('data.type'.$type);
}https://stackoverflow.com/questions/54754218
复制相似问题