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

隨手扎

October 3, 2019

30天成爲Laravel萌新(第16天) - 資料庫管理工具(上)‧使用phpMyAdmin

今天,要用 phpMyAdmin 來看看昨天建立的資料表,我會順面補充一些之前做的設定。

查看Docker容器狀態

我會假設使用的是laradock,如果你使用的是XAMPP可能會簡單一些。

那麼,首先先看看運行的容器:

docker-compose ps

我們之前有啟動phpMyAdmin的服務,那麼輸出應該包含下面內容:

           Name                          Command               State                    Ports
---------------------------------------------------------------------------------------------------------------
laradock_phpmyadmin_1         /docker-entrypoint.sh apac ...   Up      0.0.0.0:8080->80/tcp

其中注意到 Ports 的部份,這意思是綁定(bind)電腦8080端口到容器的80端口。所以我們可以透過瀏覽 http://localhost:8080 來使用phpMyAdmin。

登入phpMyAdmin

這裡伺服器要輸入mariadb,帳號和密碼分別是:default和secret。如果你是啟用MySQL的話,伺服器就改成mysql。

phpMyAdmin Login Page

October 2, 2019

30天成爲Laravel萌新(第15天) - 建立資料庫Migration

要把文章存入資料庫?那麼對於傳統關聯式資料庫,需要先建立資料表Schema。你可以透過明天要介紹的資料庫管理工具,也可以透過今天來來說的使用 Artisan 建立資料表。

使用Artisan建立資料表

Artisan可以快速的建立控制器基本模板,同樣也可以建立資料庫相關模板:

artisan make:migration create_blog_post_table

透過上面命令,會在database/migrations新增相關檔案,檔名由<日期><時間>_create_blog_post_table組成。前面時間相關的在某些情況下會很重要,後面介紹的 artiasn 命令會依序建立資料表,所以如果資料表有相互依賴就有影像。現在我們開啟該檔案看看:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateBlogPostTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('blog_post', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('blog_post');
    }
}

其中最重要兩行:

$table->bigIncrements('id');
$table->timestamps();
October 1, 2019

30天成爲Laravel萌新(第14天) - 控制器(Controller)

回頭看看,看,怎麼Route的內容變得這麼長阿!仔細一看,還做了路由以外的事情,像是修改變數內容等等。是不是該把Hangle Function獨立出來?有什麼辦法?Laravel的控制器(Controller)可以幫助。

新增Controller

我們可以透過Artisan來快速新增一個標準的控制器(Controller):

artisan make:controller Blog/ExamplePostController

在app/Http/Controllers/Blog資料夾下會多一個ExamplePostController.php的檔案,內容大致如下:

<?php

namespace App\Http\Controllers\Blog;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class ExamplePostController extends Controller
{
    //
}

Blog這個新建立的資料夾,實際對應於昨日group路由當中的'namespace' => 'Blog'參數。並且在上面生成的程式中use App\Http\Controllers\Controller;,也是因為這個新建立的模組是在App\Http\Controllers\Blog底下的命名空間,因此要引入使用App\Http\Controllers\Controller。關於PHP的模組系統,就不多做解釋了,只是相關的Blog字串如不想使用,要做相對應的調整。

之後會改用資源控制器。這邊單純要做個對照,之後可以刪除不使用。

September 30, 2019

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

昨天利用亂數文章(Lorem ipsum)產生了@section('body')的預設內容。今天,要在Route把變數$content設成類似的亂數文章。

中文亂數文章

Lorem最多的資源大多還是英文,不過中文也有不少資源可以使用。此外,有些情況使用設計好的預設文字可能會更適合。今天,就只是想來用用而已XD。透過亂數假文產生器 Chinese Lorem Ipsum可以產生中文亂數文章,也可以用於產生標題。現在來簡單的把$title設成日的及度加機子魚年。$content設成:

身主一?是字對一日國地包最中感行物評民活於力!進上城大、很會英我:的樣基覺型家海當期是著:算像系大心樣十因天特企以加想點以後許,念落是客我什在白實文種運明市下只能當作力美間要速包企以統推多,收什火投,顧外。

指的司之身鄉然說小人發,我雜人轉英臺區實說麼後男會友大,阿產效第續明造識竟自沒大上有。到全藝地港為精件連需,過聯排可然更友我後們時?一風了組麼兒比、方來出科!車卻讀力風人父資國個年愛成故作自功:原用中有、港看車我高心打!親北受活女微特利動果的無何片經物……象巴約得?色時值壓五……過點子得提圖陽可計,來麼室拉的合天!人觀難一手樹以防黃精也需被那部我冷不不連痛以哥多人事營件、目熱而夫加……紀味曾蘭不好空農後電題熱頭國:戲識者是相大覺光,雙命影心可那?前區孩增,物時。

產明物力區有王真?院見很原,經總萬官方,生回。

海在康代界積實兒變:她哥出邊。善快寶,死面大,紀著資小成去資戲面和的發行的止的接來,南生不能野:政生企性班們教求給學就得受再球也生克決的金長冷成。

標題、文章內容當然還無意義wwww

調整排版

恩~沒分段了?這是因為HTML會忽略空白,如過要換行還需要使用<br/>。當然你可以在變數內容這麼加,然後在模板將顯示的部份改為{!! $content !!},或是也可以用<pre>來做,像是把@section('body')改成:

@section('body')
    <h1>{{$title}}</h1>
    <pre>{{$content}}</pre>
@endsection
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。

  • ««
  • «
  • 1
  • 2
  • 3
  •  … 
  • 29
  • 30
  • 31
  •  … 
  • 34
  • »
  • »»
© 又LAG隨性筆記 2025