Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 模态形式的Laravel路由问题_Php_Sql_Laravel_Routes_Modal Dialog - Fatal编程技术网

Php 模态形式的Laravel路由问题

Php 模态形式的Laravel路由问题,php,sql,laravel,routes,modal-dialog,Php,Sql,Laravel,Routes,Modal Dialog,我有一个一直在做的web应用程序项目,除了提交资源上的标志外,大多数应用程序功能都可以正常工作。我想使用一个模式表单将数据提交到数据库,然后在标记的视图页面上显示所有标记的资源名称和描述(来自资源表)标记原因和其他注释(来自标记表)我让它工作到只提交标志\u原因和其他\u注释的位置,而根本不更新我的资源表。我相信我现在遇到了路由问题,因为在更改我的函数以更新我的资源表并在DB中创建一个新的标志项之后,我会遇到如下错误 缺少App\Http\Controllers\FlagsController:

我有一个一直在做的web应用程序项目,除了提交资源上的标志外,大多数应用程序功能都可以正常工作。我想使用一个模式表单将数据提交到数据库,然后在标记的视图页面上显示所有标记的资源
名称和描述
(来自资源表)
标记原因和其他注释
(来自标记表)我让它工作到只提交
标志\u原因和其他\u注释的位置,而根本不更新我的资源表。我相信我现在遇到了路由问题,因为在更改我的函数以更新我的资源表并在DB中创建一个新的标志项之后,我会遇到如下错误

缺少App\Http\Controllers\FlagsController::addFlag()的参数1

这是我的一些代码,希望有人能帮我最终一劳永逸地解决这个问题

路线

Route::get('resource',array('as'=>'viewsource','uses'=>'ResourceController@resource'));
路由::get('flags','FlagsController@index');
路由::post('resource',['as'=>'resource','uses'=>'FlagsController@addFlag']);
///路由::post('resource',['as'=>'resource','uses'=>'FlagsController@postFlag']);///

此路由工作正常,只将标记的表数据插入数据库。
您需要保留路由,以便它传递
资源ID
,但在设置表单时也需要传递它

{!! Form::open(array('route'=>'resource' array('Resource_ID' => $yourId), 'class'=>'form', 'method'=>'POST')) !!}
关于您的评论,并仔细查看您的代码,我认为重新考虑这是如何工作的可能是有意义的

您正在向该视图传递多个资源,因此我认为像我最初建议的那样将资源id添加到URL不是最好的主意,因为它需要根据单击的资源进行动态更改,并且URL不是通过javascript最容易更改的

我认为更好的解决方案是回到使用
Form::open(array('route'=>'resource','class'=>'Form','method'=>'POST'))
,然后从路由中删除
/{Resource\u ID}
部分,并从
公共函数addFlag()
中删除
$ID
,因为我们不再通过URL传递它

然后在表单中,添加一个隐藏的有效资源id

<input type="hidden" name="resource_id" id="resource_id" value="" />
否在
addFlag()
方法中,您可以通过

$id = \Input::get('resource_id');

你需要保持你的路线,这样它就可以通过
资源ID
,但是你也需要在设置表单时通过它

{!! Form::open(array('route'=>'resource' array('Resource_ID' => $yourId), 'class'=>'form', 'method'=>'POST')) !!}
关于您的评论,并仔细查看您的代码,我认为重新考虑这是如何工作的可能是有意义的

您正在向该视图传递多个资源,因此我认为像我最初建议的那样将资源id添加到URL不是最好的主意,因为它需要根据单击的资源进行动态更改,并且URL不是通过javascript最容易更改的

我认为更好的解决方案是回到使用
Form::open(array('route'=>'resource','class'=>'Form','method'=>'POST'))
,然后从路由中删除
/{Resource\u ID}
部分,并从
公共函数addFlag()
中删除
$ID
,因为我们不再通过URL传递它

然后在表单中,添加一个隐藏的有效资源id

<input type="hidden" name="resource_id" id="resource_id" value="" />
否在
addFlag()
方法中,您可以通过

$id = \Input::get('resource_id');

FlagsController中的addFlag函数接受名为$id的参数。您收到的异常是因为您忘记将参数添加到路由中

Route::post('resource', ['as' => 'resource', 'uses'=>'FlagsController@addFlag']);
应该是

Route::post('resource/{id}', ['as' => 'resource', 'uses'=>'FlagsController@addFlag']);
我相信Laravel路由参数是特定于名称的,这就是为什么{Resource\u ID}不起作用的原因

您可以在Laravel中阅读有关参数布线的更多信息 至于资源视图中的模式,还需要在表单上传递要更新的资源的参数

{!! Form::open(array('route'=>'resource', array('id' => $yourIdHere), 'class'=>'form', 'method'=>'POST')) !!}
请确保将$yourIdHere替换为您想要添加的资源


其他一切似乎都正常。

FlagsController中的addFlag函数接受一个名为$id的参数。您收到的异常是因为您忘记将该参数添加到路由中

Route::post('resource', ['as' => 'resource', 'uses'=>'FlagsController@addFlag']);
应该是

Route::post('resource/{id}', ['as' => 'resource', 'uses'=>'FlagsController@addFlag']);
我相信Laravel路由参数是特定于名称的,这就是为什么{Resource\u ID}不起作用的原因

您可以在Laravel中阅读有关参数布线的更多信息 至于资源视图中的模式,还需要在表单上传递要更新的资源的参数

{!! Form::open(array('route'=>'resource', array('id' => $yourIdHere), 'class'=>'form', 'method'=>'POST')) !!}
请确保将$yourIdHere替换为您想要添加的资源


其他一切似乎都正常。

谢谢您的回复,在您的表单方法中,
$yourId
我应该在那里使用哪个ID?我尝试了
$id
我得到了
未定义的变量id
,我尝试了
$resource
并得到了一个
数组到字符串的转换
错误。我刚刚更新了答案,也许最好换一种方式,因为我们正在处理多个资源。谢谢您的回复,在表单方法中,
$yourId
我应该在那里使用哪个ID?我尝试了
$id
我得到了
未定义的变量id
,我尝试了
$resource
并得到了一个
数组到字符串的转换
错误。我刚刚更新了答案,也许最好换一种方式,因为我们正在处理多个资源。