又LAG隨性筆記
  • 關於我
  • 作品集
  • 生活隨筆
  • 與我聯絡
  • 隨手扎

隨手扎

September 29, 2019

30天成爲Laravel萌新(第12天)- 簡易Blog頁面(上)

今天要來建立一個部落格文章的極簡陋顯示頁面。

建立路由

在routes/web.php檔案中添加以下內容:

Route::group(['prefix' => 'blog',
              'as' => 'blog/',
              'namespace' => 'Blog', ],

             function(){
                  Route::get('/post/{post_id}', function($post_id){
                      $title = "Example Title";
                      $content = "Example Content";
                      return view('blog.post', [
                          "title" => $title,
                          'content' => $content,
                      ]);
                  });
              });

儘管其實完全不需要用到group,不過未來可以像其他blog系統一樣,除了有文章頁面(post),還可以有其他獨立頁面(page)。另外,添加blog的前綴,可以將其他前綴用於其他作用,或是最後在做個轉址。總之,先選了個靈活的寫法。

其中,好好注意$title和$content這兩個參數,這兩個參數隨後會在多次變動修改,今天主要先把頁面顯示出來。

部落格文章頁面模板

接者建立resources/views/blog/post.blade.php檔案(當然需要先建立resources/views/blog資料夾)。並且上頭原本路由區用的view也可以寫為blog/post。將這份檔案簡單填入以下內容:

@extends("base",['title'=>$title]) {{-- 第二個參數可以傳遞變數給父模板,但是父模板改用插槽方式,須改用以下方式 --}}

@section('title', $title)

@section('body')
    <h1>{{$title}}</h1>
    {{$content}}
@endsection

這個頁面模板繼承了基礎頁面(base),並填入頁面內容。不過,還沒有基礎也面阿?現在來建立resources/views/base.blade.php,並寫下以下內容:

September 28, 2019

30天成爲Laravel萌新(第11天) - 路由&頁面模板(4)

使用Artisan顯示目前路由狀態

首先,先來說說怎麼看目前路由狀態。透過artisan route:list列出目前路由狀態:

+--------+----------------------------------------+--------------+------+---------+--------------+
| Domain | Method                                 | URI          | Name | Action  | Middleware   |
+--------+----------------------------------------+--------------+------+---------+--------------+
|        | GET|HEAD                               | /            |      | Closure | web          |
|        | GET|HEAD                               | api/user     |      | Closure | api,auth:api |
|        | GET|HEAD                               | hello        |      | Closure | web          |
|        | GET|HEAD|POST|PUT|PATCH|DELETE|OPTIONS | hello-world  |      | Closure | web          |
|        | GET|HEAD                               | hello/{name} |      | Closure | web          |
+--------+----------------------------------------+--------------+------+---------+--------------+

首先要注意到的是Method和URI,這也是在定義路由最基礎的部份,URL在路由定義時就稱作PATH。我們還可以將路由命名(Name);至於Action與以後會提到的控制器(Controller)有關,這裡顯示Closure表示路由由handler function處理請求;最後Middleware預計本系列文章不會提到,又興趣可以去看官方文件。

api/user定義在routes/api.php中。

基礎路由方法

基本路由方法有:

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

基本上就對應了REST的GET、POST、PUT、PATCH、DELETE、OPTIONS的請求方法。此外還可以透過Route::any($uri, $callback);來直接處理請求,而不管請求方法;或是使用Route::match([$method,...], $uri, $callback);來處理特定請求方法。

※ 請求方法 是HTTP請求裡頭的一個欄位:METHOD。

September 27, 2019

30天成爲Laravel萌新(第10天) - 路由&頁面模板(3)

回去看了一下文件,才發現之前有好多沒用到過 畢竟只學了2周的時間。不過有些設計挺有趣的。

今天來看一下Blade模板語言中的一些(我覺得)重要的功能。

印出變數

昨天已經看過怎麼顯示變數了,使用{{$variable}}。今天要特提的是:怎麼給變數一個預設值。

{{isset($variable) ? $variable : "Default Value"}}

在5.3版本1以前還可以這麼做:

{{ $variable or 'Default' }}

不過在5.8、6.x以後似乎改成這樣:

{{$variable ?? 'Default'}}

我不清楚爲什麼把這麼方便的功能給去除掉了。 6.x之後的用法並沒有在官網的文件特別提,會發現單純是範例中有類似程式碼。


上面其實還相當於

@isset ($variable)
	{{$variable}}
@else
	Default
@endisset

另外還有@empty

@empty($variable)
	Default
@else
	{{$variable}}
@endempty
September 26, 2019

30天成爲Laravel萌新(第9天) - 路由&頁面模板(2)

繼續昨天

Route::get('/hello/{name}', function ($name) {
    return '<h1>Hello, '.$name.'</h1>';
});

透過路徑接受了參數傳了進來,再加以加工輸出回去。不過這麼寫不怎麼美觀, 因為這違反了 「 只做一件事情 」的原則,不但處理了路由請求,還傳遞參數並渲染頁面。

今天透過模板系統,要來把路由請求處理與頁面設計分離。


首先,把上面程式修改為以下內容

Route::get('/hello/{name}', function ($name) {
    return view("hello-name", [
        "name" => $name,
    ]);
});

接著在新增一個模板檔案resources/views/hello-name.blade.php

<h1>Hello, {{$name}}</h1>

然後瀏覽http://localhost/hello/Daniel 看看,應該與之前畫面並無差異。

September 25, 2019

30天成爲Laravel萌新(第8天) - 路由&頁面模板(1)

接下來幾天,會交叉介紹路由(Route)和頁面模板(View/Blade)。幾經思考,這兩者關係十分密切,不太好單獨撰寫。


關於路由(Route),我們曾經在第六天短暫看到過。

<?php
Route::get('/', function () {
    return '<h1>Hello</h1>';
});

現在我們看看routes資料裡面的內容:

  • api.php
  • channels.php
  • console.php
  • web.php

我們修改的是web.php的內容,這也是最主要訂立路由的檔案。api.php的檔案實際上也不太有差別,不過api.php底下定義的路由,預設會前置增加api/的前綴,是設計用於提供HTTP API路由定義的檔案。

瀏覽 http://localhost/ 以後,就會顯示Hello World,如果你嘗試右鍵瀏覽網頁原始碼(view-source:http://localhost/)就會看到<h1>Hello</h1>。

在回頭看看網址,除了localhost外,後面的就是路徑/,認知道這個斜線是很重要的,因為Apache2和Nginx對於結尾斜線的認知有些不同。接著再在wep.php增加以下入由看看:

September 24, 2019

30天成爲Laravel萌新(第7天) - 認識artisan

Laravel有「 為網頁藝術家創造的框架 」的美譽,他的工具名字也很有意思 artisan ,意為 工匠 ,與藝術家(artist)一樣,是與藝術(art)有關的字。

artisan 可以用來顯示路由狀態、遷移資料庫、產生基本樣板程式碼、調整文件結構狀態等等。而且之前已經看過,就是我們用來產生專案文件密鑰(key)的artisan key:generate。

不過,如果使用laradock進入workspace的docker容器的話,可能會找不著指令。artisan詳細使用方式,會在未來有需要時在做說明,今天,就先來簡單看一下。

如果使用laradock進入workspace的docker容器的話,找不著指令嗎? 透過下面命令切換到/var/www目錄下在試試。

cd /var/www

列出所有artisan子命令

不同版本的artisan有可能存在使用差異。今天主要說明怎麼快速了解指令如何使用。

首先先學著者麼列出所有能使用的工具:

artisan

或是

artisan list
  • ««
  • «
  • 1
  • 2
  • 3
  •  … 
  • 29
  • 30
  • 31
  •  … 
  • 33
  • »
  • »»
© 又LAG隨性筆記 2023