L01 Laravel 教程 隨筆

lanffff發表於2019-04-14

1.關於本教程的開發環境問題
個人使用的phpstudy配置簡易laravel環境,通過在站點域名管理設定新建站點,在host中註冊自定義域名的方法實現執行laravel框架。

L01 Laravel 教程

L01 Laravel 教程

  1. artisan tinker
    在命令列中直接進行資料庫操作,在Windows CMD中 與網站根目錄鍵入 artisan tinker 進入此模式,exit退出此模式。
  2. resource 路由方法
    Route::resource('users', 'UsersController');

    控制器寫法
    public function show(User $user) { return view('users.show', compact('user')); }

    User 對應 {user}
    Route::get('/users/{user}', 'UsersController@show')->name('users.show');

    $user表示傳遞的ID值
    compact的作用是關聯$user,把其當做引數傳入檢視,將檢視與引數進行繫結。

HTTP 請求 URL 動作 作用
GET /users UsersController@index 顯示所有使用者列表的頁面
GET /users/{user} UsersController@show 顯示使用者個人資訊的頁面
GET /users/create UsersController@create 建立使用者的頁面
POST /users UsersController@store 建立使用者
GET /users/{user}/edit UsersController@edit 編輯使用者個人資料的頁面
PATCH /users/{user} UsersController@update 更新使用者
DELETE /users/{user} UsersController@destroy 刪除使用者

4.gravatar 獲取頭像方法
模型方法

    `public function gravatar($size = '100')
    {
        $hash = md5(strtolower(trim($this->attributes['email'])));
        return "http://www.gravatar.com/avatar/$hash?s=$size";
    }`
1.  為 gravatar 方法傳遞的引數 `size` 指定了預設值 100;
2.  通過 `$this->attributes['email']` 獲取到使用者的郵箱;
3.  使用 `trim` 方法剔除郵箱的前後空白內容;
4.  用 `strtolower` 方法將郵箱轉換為小寫;
5.  將小寫的郵箱使用 md5 方法進行轉碼;
6.  將轉碼後的郵箱與連結、尺寸拼接成完整的 URL 並返回;

獲取頭像
$user->gravatar();

  1. 輸入框自動填充舊資料

    {{ old('name') }}

6.validate驗證方法

這時我們可以使用 `required` 來驗證使用者名稱是否為空。
`'name' => 'required'`
我們還可以使用 `min` 和 `max` 來限制使用者名稱所填寫的最小長度和最大長度。
`'name' => 'min:3|max:50'`
email驗證
'email'  =>  'email'
唯一性驗證
'email'  =>  'unique:users'
密碼匹配認證
'password'  =>  'confirmed'
密碼:
<input type='password' name='new_password' />
確認密碼:
<input type='password' name='new_password_confirmation'  />
  1. validate驗證中文提示框
    Composer 來安裝 laravel-lang。

$ composer require "overtrue/laravel-lang:~3.0"

安裝成功後,在 config/app.php 檔案中將以下這一行:

Illuminate\Translation\TranslationServiceProvider::class,
替換為:

Overtrue\LaravelLang\TranslationServiceProvider::class,

最後 app.php設定中文。

'locale' => 'zh-CN',


8.session訊息框
     session()->flash('success', '歡迎,您將在這裡開啟一段新的旅程~');

通過回饋狀態判斷

[[[[[[[@foreach](https://learnku.com/users/5651)](https://learnku.com/users/5651)](https://learnku.com/users/5651)](https://learnku.com/users/5651)](https://learnku.com/users/5651)](https://learnku.com/users/5651)](https://learnku.com/users/5651) (['danger', 'warning', 'success', 'info'] as $msg)
@if(session()->has($msg))

{{ session()->get($msg) }}

@endif
@endforeach


9. method_field 隱藏域

{{ method_field('DELETE') }}


10.  remember功能
驗證登入 並記住登入狀態  最大儲存5年

Auth::attempt($credentials, $request->has('remember'))

11.多對多 筆記
模型方法

//我的粉絲 我可以被多人關注
public function followers()
{
return $this->belongsToMany(User::Class, 'followers', 'user_id', 'follower_id');
}
//我的關注 我可以關注多人
public function followings()
{
return $this->belongsToMany(User::Class, 'followers', 'follower_id', 'user_id');
}

控制器方法

//我的關注
public function followings(User $user)
{
$users = $user->followings()->paginate(30);
$title = '關注的人';
return view('user.show_follow', compact('users', 'title'));
}
//我的粉絲
public function followers(User $user)
{
$users = $user->followers()->paginate(30);
$title = '粉絲';
return view('user.show_follow', compact('users', 'title'));
}

本作品採用《CC 協議》,轉載必須註明作者和本文連結