###### tags: `laravel` DAY3-22.8.31 # laravel-3 # 建立並顯示出的連線頁面 - 方法1 - 預期設定: 網址設定命名 : studebt 控制台設定命名 : StudentController 顯示的內容要放在 : view/StudentController(FILE)底下叫index.blade.php內 - 到路由建立指向網址: 1. 在VSCODE Ctrl+P 輸入web.php並選擇 -> 到了路由頁面 2. 為了讓網址可以指向StudentController資料夾/index的頁面 3. 把路由/web.php預設的 <pre> Route::get('/', function () { return view('welcome'); });</pre> 複製起來並做更改 *註:其/為網址設定, view(為實際檔案位置) 4. Ctrl+P輸入:welcome -> 定位到view資料夾 在其底下自行建立資料夾(自訂控制台的命名),此例為StudentController資料夾 -> 新增index.blade.php -> 輸入網頁要顯示的內容 5. 到官網The Basics -> Controllers -> 搜尋 php artisan 將範例 <pre>php artisan make:controller</pre> 複製起來 -> 在其之後+空白, 接上資料夾名稱(StudentController)組合成 如下: php artisan make:controller StudentController 6. 回到Vscode -> Ctrl+~ 打開選單 -> 右下設定更改為gitbash -> 貼上剛剛組合的代碼 <pre>php artisan make:controller StudentController</pre> 這樣會在Http/Controllers底下, 產生檔案 : StudentController.php 7. 到Controllers/StudentController.php內, 預設的class內的執行區 建立一個function <pre>public function 自行命名A(){ 執行內容 }</pre> 8. 並在上述的function內新增 return view('StudentController.index'); 如下: <pre>public function 自行命名A(){ return view('StudentController.index'); }</pre> 9. 到官網的Basic Controllers下複製範例 <pre>Route::get('/user/{id}', [UserController::class, 'show']);</pre> 貼到路由的web.php , 並依需求稍作修改 , 如下 <pre>Route::get('/student', [StudentController::class,'index']); 路由::取得方式('/設置的網址'), [實際檔案位置(資料夾名稱)底下的class,底下的內容(名為index的function)]</pre> # 建立並顯示出的連線頁面 - 方法2 - 差異1 : 改用網址帶值, 不須像方法1再 路由/web.php裡再 Route::resource('bikes', [BikeController::class,"create"]); 把實際檔案路徑寫成[陣列, 並在該陣列輸入 "要使用的function"] 而導致每當需要更動時,須到web.php下方調整對應的function內容 - 差異2 : 而是再web.php輸入 Route::resource('bikes', BikeController::class); 少了設為陣列 且不須再陣列內的最後 寫上使用的function 且讓系統自行生成 可直接使用的function - 缺點 : 由於非手刻設定, 如同套件般不建議自行修改其內容, 以免發生錯誤 僅使用其設定而非更改, 如function的命名等... - 網址對比: 方法1為 Route::resource('bikes', [BikeController::class,"create"]); http://localhost/LARAVEL/example-app/public/bikes 方法2為 Route::resource('bikes', BikeController::class); http://localhost/LARAVEL/example-app/public/bikes/create 兩者都是在web.php內將網址設成bikes, 但方法1是每當你需要一個新的"分頁" 就需要將該分頁再web宣告一個function執行內容, 且增加一段如上述的code 去製造一個網址與實際檔案位置的部分 但方法2則只須再web.php寫一個網址與實際檔案位置的部分 而function的部分 分割到Http/Controllers/自行命名.php內調整 然後只須再網址帶值 即可引入指定的function內容 - 實作: 1. 官網 -> The Basics -> Controller -> Resource Controllers -> 複製範例 : <pre>php artisan make:controller PhotoController --resource</pre> 修改範例 : <pre>php artisan make:controller 自行命名A --resource</pre> 將修改內容貼到git Bash執行 會自動在專案的Http/Controllers , 產生檔案 : 自行命名A.php 2. 回到官網 -> 一樣Resource Controllers -> 往下一點 複製範例 : <pre> use App\Http\Controllers\PhotoController; Route::resource('photos', PhotoController::class);</pre> 修改範例: <pre> use App\Http\Controllers\自行命名A; <=該命名為要使用的檔名(上述步驟1產生的檔名A) Route::resource('自定義網址', 上述步驟1產生的檔案內的class名稱 ::class);</pre> 到 路由/web.php 上方貼上 : use App\Http\Controllers\自行命名; 下方貼上 : Route::resource('自訂義網址', class名稱 ::class); 3. 到Http/Controllers/自行命名A.php內 -> 再index,create...等function內輸入 : 要執行的內容 --------------------------------------------------------------------- # 方法2 延伸應用 - 顯示CRUD相關指令 : git Bash 輸入 : php artisan route:list - CRUD指令相關規範 : 官網 -> Resource Controllers -> 下方 -> 表格 - 兩個大框號{{ }}的意思 : 未知 1. 到官網 -> 輸入Helpers -> URLs類 -> 選route -> 複製範例: <pre>$url = route('route.name', ['id' => 1]);</pre> 2. 到views底下的 -> 自行命名(FILE)/index.blade.php 寫a標籤 , 並再href加上兩層尖框號 {{ }} <pre>< a href="{{}}">< /a></pre> 3. 放入剪下的內容 route('route.name', ['id' => 1]) 到 {{ }} 內 <pre>< a href="{{route('route.name', ['id' => 1])}}">連結名稱</ a></pre> # 其它: php artisan --version 顯示版本