亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel - 路由:控制器嵌套控制器

Laravel - 路由:控制器嵌套控制器

PHP
RISEBY 2021-11-13 17:17:41
我的路線:Route::apiResource('courses', 'CourseController');Route::apiResource('courses.classrooms', 'ClassroomController');列表: php artisan route:listapi/v1/courses/{course}api/v1/courses/{course}/classrooms/{classroom}我的問題是:我所有的功能都classroom controller需要course,類似的東西public function index($course_id){  $classroom = Classroom::where('course_id', $course_id)->get();  return $classroom;}public function store($course_id, Request $request){// ...  $classroom->course_id = $course_id;// ...}public function show($course_id, $id){  $classroom = Classroom::where('course_id', $course_id)->find($id);  return $classroom;}// ...在 Laravel 中有一些策略/助手來自動完成這個嗎?我認為沒有必要$course_id在所有功能中手動添加屬性,我該怎么辦?
查看完整描述

2 回答

?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

如果路由像您發布的一樣正確注冊,則您的方法ClassroomsController應該接收一個附加參數,該參數是來自 url 的課程 ID 片段。


例如,如果您請求/api/v1/courses/1/classrooms路由,控制器將接收正確的{course}參數設置1為第一個參數。


然后,您可以實現 ClassroomsController 的 index 方法以使用隱式模型綁定并使用給定的課程 url id 獲取 Course 實例。


為此,您必須為第一個函數的參數鍵入提示 Course 模型,并將變量命名為要用于檢索模型的 url 片段。


在您的代碼示例中,您應該執行以下操作:


public function index(Course $course)

{

    return $course->classrooms;

}

注意:我假設您在 Course 和 Classroom 模型之間存在關系以從課程模型實例中檢索教室


您可以在此處的官方文檔中閱讀更多相關信息


查看完整回答
反對 回復 2021-11-13
?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

您可以使用 agroup來包含所有路由。就像是:


 Route::group(['prefix' => '{course}'], function () {


// you can place your routes here


});

因此,該組中存在的所有路由都已經course在 url 路徑中具有該值,您不必為每個路由“重寫”它。


如果該字段是由您設置的,例如一個env變量,那么RouteServiceProvider您可以在mapApiRoutes函數中放置所需的前綴 。


 protected function mapApiRoutes()

    {

        Route::prefix('/api/v1/courses/'.config('app.myVariable'))

             ->middleware('api')

             ->namespace($this->namespace)

             ->group(base_path('routes/api.php'));

    }

這樣,您的所有 api 端點都將以該前綴開頭,并且您可以在所有端點中使用它。


查看完整回答
反對 回復 2021-11-13
  • 2 回答
  • 0 關注
  • 221 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號