我使用RESTful控制器并传递变量(使用表单)在这里工作得很好。
现在由于某种原因,我需要使用简单链接,使用action()
和@create
行动的专用路线创建。
我的视图创建了几个具有不同参数的类似链接:
<a href="{!! action('\App\Http\Controllers\Admin\Franch\Category\SubCategoryController@create', array('mainCategoryName' => $mainCategoryName)) !!}">
它有效,因为我可以在URL中看到这一点:
/create?mainCategoryName=some_sample_name
但是这条路线并没有将变量传递给@create动作,或者控制器没有收到它的理由:
Route::get('admin/franch/sub_categories/create', ['uses' => 'Admin\Franch\Category\SubCategoryController@create');
我想知道如何使用GET和POST方法将变量从视图传递到特定控制器?
这是我的@create控制器:
public function create($mainCategoryName = false)
{
dd($mainCategoryName);
....
总是给出false
。
答案 0 :(得分:2)
您可以在链接和该函数用户Ajax
中创建一个函数$.ajax({
type: "POST",//Or Get
url: url,
data: {"var_name":variable},
success: success,
dataType: dataType
});
现在您可以在数据中发送变量。然后你可以通过以下方式获得控制器中变量的值:
Input::get('var_name');
答案 1 :(得分:1)
如果您在控制器中进行所有“计算”并将结果值传递给视图会更好
class SomeController() extends Controller
{
public function getView():View
{
$mainCategoryName = "fix";
$formUrl = action('\App\Http\Controllers\Admin\Franch\Category\SubCategoryController@create', array('mainCategoryName' => $mainCategoryName));
return view('view.show', compact('formUrl'));
}
...
你的错误是在视图中保留有意义的数据,而视图应该只处理值:
<a href="{!! $formUrl !!}">
如果你真的想“发疯”,你可以创建一个使用刀片视图和控制器数据生成 HTML 的类,然后你可以在控制器中执行这个类,让你的“部分”准备好以 HTML 形式包含在视图中。但反过来不行。将计算排除在您的视图之外。