###### 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 顯示版本