如果您想了解php–Laravel嵌套资源和可重用的控制器和laravel嵌套事务的知识,那么本篇文章将是您的不二之选。我们将深入剖析php–Laravel嵌套资源和可重用的控制器的各个方面,并为您解
如果您想了解php – Laravel嵌套资源和可重用的控制器和laravel嵌套事务的知识,那么本篇文章将是您的不二之选。我们将深入剖析php – Laravel嵌套资源和可重用的控制器的各个方面,并为您解答laravel嵌套事务的疑在这篇文章中,我们将为您介绍php – Laravel嵌套资源和可重用的控制器的相关知识,同时也会详细的解释laravel嵌套事务的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- php – Laravel嵌套资源和可重用的控制器(laravel嵌套事务)
- Laravel 5框架学习之模型、控制器、视图基础流程,laravel框架_PHP教程
- Laravel 5框架学习之路由、控制器和视图简介,laravel框架_PHP教程
- Laravel 8 - 如何为嵌套资源路由中的范围设置不同的关系名称
- Laravel 8资源控制器未获取模型
php – Laravel嵌套资源和可重用的控制器(laravel嵌套事务)
我正在创建一个API,我想要包括常规资源和嵌套资源
例如,我会说我有一个Post资源和Comment资源.我已经设置了适当的路线和控制器,如下所示
路线
Route::resource('posts', 'PostsControllers'); // /posts/{id}
Route::resource('comments', 'CommentsControllers'); /comments/{id}
但我也希望将评论作为帖子的嵌套资源,就像这样
嵌套资源路由
Route::resource('posts.comments', 'PostCommentsControllers'); /posts/{id}/comments/{id}
因为我已经编写了我的CommentsController,我想知道为我的PostsController重用CommentsController的最佳方法
谢谢
解决方法:
使用继承是最好的方法:
class BaseController extends Controller {
public function index() {
}
public function create() {
}
public function store() {
}
public function update() {
}
}
class PostsController extends BaseController {
}
class CommentsController extends BaseController {
}
Laravel 5框架学习之模型、控制器、视图基础流程,laravel框架_PHP教程
laravel 5框架学习之模型、控制器、视图基础流程,laravel框架
添加路由
复制代码 代码如下:
Route::get(''artiles'', ''ArticlesController@index'');
创建控制器
复制代码 代码如下:
php artisan make:controller ArticlesController --plain
修改控制器
<?php namespace App\Http\Controllers; use App\Article; use App\Http\Requests; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class ArticlesController extends Controller { public function index() { $articles = Article::all(); return $articles; } }
可以在浏览器中看到返回的 JSON 结果,cool!
修改控制器,返回视图
public function index() { $articles = Article::all(); return view(''articles.index'', compact(''articles'')); }
创建视图
立即学习“PHP免费学习笔记(深入)”;
@extends(''layout'') @section(''content'') <h1>Articles</h1> @foreach($articles as $article) <article> <h2>{{$article->title}}</h2> <div>{{$article->body}}</div> </article> @endforeach @stop
浏览结果,COOL!!!!
显示单个文章
添加显示详细信息的路由
复制代码 代码如下:
Route::get(''articles/{id}'', ''ArticlesController@show'');
其中,{id} 是参数,表示要显示的文章的 id,修改控制器:
public function show($id) { $article = Article::find($id); //若果找不到文章 if (is_null($article)) { //生产环境 APP_DEBUG=false abort(404); } return view(''articles.show'', compact(''article'')); }
laravel 提供了更加方便的功能,修改控制器:
public function show($id) { $article = Article::findOrFail($id); return view(''articles.show'', compact(''article'')); }
It''s cool.
新建视图
@extends(''layout'') @section(''content'') <h1>{{$article->title}}</h1> <article> {{$article->body}} </article> @stop
在浏览器中尝试访问:/articles/1 /articles/2
修改index视图
@extends(''layout'') @section(''content'') <h1>Articles</h1> <hr/> @foreach($articles as $article) <article> <h2> {{--这种方式可以--}} <a href="/articles/{{$article->id}}">{{$article->title}}</a> {{--这种方式更加灵活,不限制路径--}}<br> <a href="{{action(''ArticlesController@show'', [$article->id])}}">{{$article->title}}</a> {{--还可以使用--}}<br> <a href="{{url(''/articles'', $article->id)}}">{{$article->title}}</a> </h2> <div>{{$article->body}}</div> </article> @endforeach @stop
以上所述就是本文的全部内容了,希望能够对大家学习Laravel5框架有所帮助。
Laravel 5框架学习之路由、控制器和视图简介,laravel框架_PHP教程
laravel 5框架学习之路由、控制器和视图简介,laravel框架
查看 app/http/routes.php
复制代码 代码如下:
Route::get(''/'', ''WelcomeController@index'');
@是一个界定符,前面是控制器,后面是动作,表示当用户请求url / 的时候,执行控制器 WelcomeController 中的 index 方法
复制代码 代码如下:
app/http/controllers/welcomecontroller.php
public function index()
{
return view(''welcome'');
}
当前默认返回一个视图,视图的名字叫做 welcome,实际上是 welcome.blade.php,blade是laravel的视图模板。
可以查看 `resources/views/welcome.blade.php
修改welcomecontroller.php
立即学习“PHP免费学习笔记(深入)”;
复制代码 代码如下:
public function index()
{
// return view(''welcome'');
return ''hello, laravel'';
}
在浏览器中测试,得到一个简单的反馈。
我们新建一个路由,在routes.php中增加:
复制代码 代码如下:
Route::get(''/contact'', ''WelcomeController@contact'');
可以新建一个路由,但是现在我们还是直接使用默认的控制器,在 WelcomeController.php 中添加:
复制代码 代码如下:
public function contact() {
return ''Contact Me'';
}
在浏览器终测试新增加的路由。
我们可以返回简单的字符串,也可以返回json或者html文件,所有的视图文件存储在resource->views中。
例如:return view(''welcome'') ,我们不需要考虑路径,也不要添加.blade.php扩展名,框架自动为我们完成。如果在views目录中需要子目录,例如views/forum子目录,只需要return view(''forum/xxx''),或者跟简单而明确的方式是:return view(''forum.xxx'')。
我们返回一个页面
复制代码 代码如下:
public function contact() {
return view(''pages.contact'');
}
在 views 目录下创建 pages目录,然后创建contact.blade.php
复制代码 代码如下:
Contact
以上所述就是本文的全部内容了,希望能够对大家学习Laravel5有所帮助。
Laravel 8 - 如何为嵌套资源路由中的范围设置不同的关系名称
如何解决Laravel 8 - 如何为嵌套资源路由中的范围设置不同的关系名称?
路由:
我有一个嵌套的资源路由。我用它来声明它:
getSurroundingText()
模型与关系:
我有两个模型,Route::resource(''orders.comments'',\App\Http\Controllers\Backend\OrderCommentController::class)
->parameters([
''comments'' => ''orderComment:id''
])
->except([''show'']);
和 Order
。
OrderComment
模型:
Order
public function comments()
{
return $this->hasMany(OrderComment::class);
}
模型:
OrderComment
OrderComment 控制器编辑方法签名
public function order()
{
return $this->belongsTo(Order::class);
}
实际问题
每当我想编辑订单评论时,访问 public function edit(Order $order,OrderComment $orderComment)
都会出现错误:
/orders/1/comments/1/edit
我认为这是基于我在资源中设置的参数。但由于 Call to undefined method App\Models\Order::orderComments()
中的 orderComment
参数,我需要参数为 comment
而不是 $orderComment
。这主要是由于命名约定。
可能,排除了我尝试/考虑过的解决方案:
将 OrderCommentController@edit
模型重命名为 OrderComment
。这是不可能的,因为还有其他 Comment 模型,具有不同的列,所以它也不能是多态的。
将 Comment
关系重命名为 comments
。这是一种解决方案,但不是首选方案。这是因为 orderComments
看起来比 $order->comments
等更优雅
结论/问题
那么是否有可能“告诉”Laravel 它应该寻找一个名为 $order->orderComments
而不是 comments
的关系?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Laravel 8资源控制器未获取模型
您的路线必须具有相同的变量,例如
Route::get('/employee/{employee}','EmployeeController@show');
并确保为此路由启用了绑定中间件。 ->middleware(['bindings']);
更新资源路由:
Route::resource('/employee','EmployeeController')->middleware('bindings');
,
Route::resource('employee',EmployeeController::class);
https://laravel.com/docs/8.x/controllers#resource-controllers
我们今天的关于php – Laravel嵌套资源和可重用的控制器和laravel嵌套事务的分享就到这里,谢谢您的阅读,如果想了解更多关于Laravel 5框架学习之模型、控制器、视图基础流程,laravel框架_PHP教程、Laravel 5框架学习之路由、控制器和视图简介,laravel框架_PHP教程、Laravel 8 - 如何为嵌套资源路由中的范围设置不同的关系名称、Laravel 8资源控制器未获取模型的相关信息,可以在本站进行搜索。
本文标签: