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