如何在laravel中标识资源默认url?
我正在为模型、迁移和资源控制器运行此命令如何在laravel中标识资源默认url?,laravel,url,cmd,routes,pretty-urls,Laravel,Url,Cmd,Routes,Pretty Urls,我正在为模型、迁移和资源控制器运行此命令 `php artisan make:model QuestionAnswer -mc -r` .. Laravel在资源控制器中告诉我 public function show(QuestionAnswer $questionAnswer) { // return $questionAnswer; } public function edit(QuestionAnswer $questionAnswer) { // retur
`php artisan make:model QuestionAnswer -mc -r` ..
Laravel在资源控制器中告诉我
public function show(QuestionAnswer $questionAnswer) {
// return $questionAnswer;
}
public function edit(QuestionAnswer $questionAnswer) {
// return $questionAnswer;
}
public function update(Request $request, QuestionAnswer $questionAnswer){
// return $questionAnswer;
}
如果我用web.php
Route::resource('question-answer','QuestionAnswerController')代码>或
Route::resource('questionAnswer','QuestionAnswerController')代码>或
Route::resource('question_-answer','QuestionAnswerController')代码>laravel解析路由模型绑定。。。
这意味着
示例作为一个
public function edit(QuestionAnswer $questionAnswer)
{
return $questionAnswer;
}
$questionAnswer
返回此url的对象{{route('admin.questionAnswer.edit',$questionAnswer->id')}
但是如果我写在web.php
Route::resource('faq','QuestionAnswerController')代码>
laravel无法解析路由模型绑定
那意味着$questionAnswer
为此url返回null{{route('admin.faq.edit',$questionAnswer->id')}
同样在显示
和更新
功能$questionAnswer代码>返回空
用作faq
url。。我需要更改编辑功能
变量($faq
)。或者Route::resource('faq','QuestionAnswerController')->参数(['faq'=>'questionAnswer'])代码>I
但是这三个url问答
,问答
,问答
默认工作
我在“laravel/framework”:“^6.0”(LTS)
问题
有没有可能找到我要写的确切url。。像问题答案
。。或者有任何命令行
运行auth命令后<代码>php artisan路由:list
命令为我们提供所有路由列表。。当我创建modelCategory
laravel创建表名categories
并遵循语法规则时我认为这是因为在您的方法中使用了依赖注入
试试这个
public function edit($id)
{
// return $questionAnswer;
return view('backend.faq.edit',get_defined_vars());
}
我怎么知道我需要写问题回答这个?默认情况下,它可以工作。。。当我写faq时,我需要修改编辑函数变量($faq)
我如何知道默认url(问题答案)是否有效..当php
artisan route:list命令为我们提供所有路线列表。。当我
模型类别laravel创建表名类别并遵循语法
规则
想想看,我将创建20个模型,迁移和控制器的cmd。。。我不会更改编辑、显示和更新函数变量…如何知道20型号和控制器的默认url?
Laravel是一个固执己见的框架。它遵循某些惯例
让我们了解一个路线部分
Route::match(
['PUT','PATCH'],
“/question-answer/{question-answer}”,
[QuestionAnswerController::类,“更新”]
)->名称('question-answers.update')
在上述路线中:
第一个参数:['PUT','PATCH']
是路由将尝试为传入请求匹配的方法
第二个参数:'/question-answer/{questionAnswer}'是url,其中
/question-answer
是说资源名和
{questionAnswer}
是路由参数名称
第三个参数:[QuestionAnswerController::class,'update']
是负责处理请求并提供响应的控制器和操作/方法
使用通过终端创建模型时
php artisan make:model QuestionAnswer-mc-r
它将为7个restful操作创建一个资源控制器,并将显示、编辑、更新和删除路由的方法参数名称作为模型名称的大小写,即$questionAnswer
class QuestionAnswerController扩展控制器
{
公共功能展示(问答$问答){}
公共函数编辑(QuestionAnswer$QuestionAnswer){}
公共函数更新(Request$Request,questionresponse$questionresponse){}
公共函数删除(QuestionAnswer$QuestionAnswer){}
}
这意味着,如果您不打算更改控制器方法中的参数名称,那么您可以按如下方式定义路由,以获得隐式路由模型绑定的好处
//将生成资源名为questionAnswer的路由
//这不是一个好的做法
路由::资源('questionAnswer',QuestionAnswerController::类);
//或
Route::resource('question-answer',QuestionAnswerController::class)->参数([
“问题答案”=>“问题答案”
]);
//或
Route::resource('foo-bar',QuestionAnswerController::class)->参数([
“foo bar”=>“问题答案”
]);
RFC 3986将URL定义为URL的不同部分区分大小写。因为URL是区分大小写的,所以保持低调(小写)总是安全的,并且被认为是一个好的标准
如你所见,您可以将url资源命名为foo bar
或question-answer
而不是questionAnswer
,但在通过php artisan make:model questionAnswer-mc-r
生成控制器时,将路由参数名称保留为questionAnswer
,以匹配Laravel约定,而无需更改控制器方法中的参数名称
Laravel是一个固执己见的框架,遵循某些惯例:
- 路由参数名称('questionAnswer')必须与控制器方法($questionAnswer)中的参数名称匹配,隐式路由模型绑定才能工作
- 通过artisan命令生成的控制器,其参数名称与模型名称相同
- 通过
Route::resource('posts',PostController::class)
生成的路由创建的路由的资源名称等于方法的第一个参数,路由参数名称为第一个参数的单数
- Route::resource()提供了
class Example extends Model{
public function getFooBarAttribute(){
return "hello";
}
}
$example = new Example();
$example->foo_bar();
$example->fooBar();
// $example->foo-bar() is not working because - could be result of lexical minus