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

隨手扎

October 17, 2019

30天成爲Laravel萌新(第30天) - 登入驗證

這部份在Django時,明明是最先學的,在Laravel卻放到了最後☺

要使用Laravel提供的會員系統,相當容易,只須要:

artisan make:auth
artisan migrate

然後瀏覽http://localhost/register 註冊帳號,或是http://localhost/login 登入帳號。仔細一看,會多了這些檔案:

	new file:   app/Http/Controllers/HomeController.php
	new file:   resources/views/auth/login.blade.php
	new file:   resources/views/auth/passwords/email.blade.php
	new file:   resources/views/auth/passwords/reset.blade.php
	new file:   resources/views/auth/register.blade.php
	new file:   resources/views/auth/verify.blade.php
	new file:   resources/views/home.blade.php
	new file:   resources/views/layouts/app.blade.php
	modified:   routes/web.php

其中routes/web.php多了:

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

現在瀏覽http://localhost/home 也有畫面了。

October 16, 2019

30天成爲Laravel萌新(第29天) - 表單驗證

昨天的程式碼有一些註解的內容,先取消註解試試。

resources/views/images/upload.blade.php部份內容

       @if ($errors->any())
            <div class="alert alert-danger">
                <ul>
                    @foreach ($errors->all() as $error)
                        <li>{{ $error }}</li>
                    @endforeach
                </ul>
            </div>
        @endif

routes/web.php處理post('/images/upload')請求的部份內容:

    Validator::make($request->all(), [
        'file' => 'required|image',
    ])->validate();

驗證表單資料

    Validator::make($request->all(), [
        'file' => 'required|image',
    ])->validate();

差不多等價於:

    $validate = $request->validate([
        'file' => 'required|image',
    ]);

$request有validate()的方法。還可以直接建立一個驗證器,繼承Request:

php artisan make:request ImageUpload

上面執行完後,現在,在app/Http/Requests/目錄下多了ImageUpload.php,內容改成下面這樣:

October 15, 2019

30天成爲Laravel萌新(第28天) - 上傳檔案

Laravel要上傳檔案非常的簡單,今天就來簡單帶個範例吧!

建立檔案目錄連結

首先,現用Artisan建立目錄連結。

artisan storage:link

上面命令會建立storage/app/public目錄,並將目錄同樣綁定到public/storage。這讓於此目錄下的內容,可以透過http://localhost/storage/<FILE NAME>存取。在public目錄下的檔案,基本都可以直接透過瀏覽器存取。

上傳頁面

同樣以一個簡單的上傳頁面作為範例。先建立resources/views/images/upload.blade.php:

@extends("base",['title'=>'上傳圖片'])

@section('title', '上傳圖片')

@section('body')
    <form action="{{route('image.upload')}}" method="post" enctype="multipart/form-data">
        @csrf

       <!--
       @if ($errors->any())
            <div class="alert alert-danger">
                <ul>
                    @foreach ($errors->all() as $error)
                        <li>{{ $error }}</li>
                    @endforeach
                </ul>
            </div>
        @endif
        -->

        <input name="file" type="file" accept="image/*" value=""/>
        <input name="" type="submit" value="上傳"/>
    </form>
@endsection
October 14, 2019

30天成爲Laravel萌新(第27天) - 本地化、多語言支援(Localization)

@extends("base",['title'=>'哎呀,找不著頁面'])

@section('title', '哎呀,找不著頁面')

@section('body')
    <h1>{{__('404 error message')}}</h1>
    <b>哎呀,找不著頁面</b>
    <p>
        <ul>
            <li><a href="/">點擊我,回到首頁</a></li>
            <li><a href="{{route('blog/post.index')}}">我的網誌</a></li>
        </ul>
    </p>
@endsection

開始

在昨天簡單建立的錯誤頁面中,又再一次偷渡了一個東西。對,就是那個有點怪怪的{{__('404 error message')}},實際上這等價於@lang('404 error message')。透過lang()函式的方式,也可以在控制器做變換。lang()會根據給定的字串,以及設定(app/config.php)中的locale和faker_locale轉換為對應的語言。預設會轉換為locale所設定的,而備用語言可由faker_locale設定。當兩者都不存在時,會直接輸出字串。還記得我們把app/config.php部份內容改成這樣嗎?

    'locale' => 'zh-TW',
    'fallback_locale' => 'en',

不過,不管是locale還是faker_locale,都還找不著{{__('404 error message')}}要轉換成的文字,所以現在會直接生成404 error message。

October 13, 2019

30天成爲Laravel萌新(第26天) - 客製化404錯誤頁面

HTTP協議上存在許多狀態碼,其中400系列、500系列錯誤可能是最常見到。200、300很難被注意到。恐怕又以404錯誤、403錯誤、500錯誤、503錯誤最常見。一個好的錯誤提示頁面,可以帶來很好的使用體驗。你可以看看別人怎麼設計(以及2018年不可錯過的創意404報錯設計),甚至更有404 PAGE TEMPLATE (https://www.404pagefree.com/) 可以直接下載404錯誤頁面模板(這網址真有趣),裡頭模板多以CC-BY 3.0姓名標示授權,可用於商業用途。

404 Page image


那麼在Laravel要怎麼客製化這些錯誤提示頁面?以404錯誤頁面為例,可以建立resources/views/errors/404.blade.php檔案,寫入以下內容:

@extends("base",['title'=>'哎呀,找不著頁面'])

@section('title', '哎呀,找不著頁面')

@section('body')
    <h1>{{__('404 error message')}}</h1>
    <b>哎呀,找不著頁面</b>
    <p>
        <ul>
            <li><a href="/">點擊我,回到首頁</a></li>
            <li><a href="{{route('blog/post.index')}}">我的網誌</a></li>
        </ul>
    </p>
@endsection

同樣的…CSS不是本系列重點……

October 12, 2019

30天成爲Laravel萌新(第25天) - 紀錄檔

使用Logging

現在,要再回到laradock來。不過同樣的,Lavavel儲存紀錄檔的地方也是在storage/logs。這裡會儲存使用Log::info()所寫下的紀錄。

docker-compose exec workspace bash -c "tail -f storage/logs/最新的log"

如果使用Linux的話,也可以直接:

tail -f storage/logs/最新的log

當然你也可以直接把紀錄檔,用文字編輯器開啟。不過上述會這麼做,是因為如次可以更簡單的在開發時除錯。有時候,Laravel錯誤訊息頁面提供的訊息並非一目瞭然,會需要用到printf方式除錯(我假設…你不動gdb,但用過最基本的除錯手法…)。在這裡,使用一系列Log::的方法,其中,Log::debug()就對應除錯資訊。這和我曾經寫過的瀏覽器console.log()外的一些其他用法 有些像。

  • ««
  • «
  • 1
  • 2
  • 3
  •  … 
  • 26
  • 27
  • 28
  •  … 
  • 33
  • »
  • »»
© 又LAG隨性筆記 2023