顯示具有 laravel 標籤的文章。 顯示所有文章
顯示具有 laravel 標籤的文章。 顯示所有文章

2019年8月1日 星期四

Laravel 驗證訊息如何設定顯示自訂欄位名稱?



Laravel 的驗證功能蠻強大的,但一般的Example在寫時都沒有標示如何顯示自訂欄位名稱
導致在檢核欄位失敗要出現錯誤警訊時,只會顯示html 表單變數名稱,其實 Laravel的驗證模組就有包含這部份的設定了,只是在官網上似乎也沒有多做什麼說明,查了一下,使用上非常容易,只是大多的參考文件都是在強調如何設定自定的錯誤訊息,而非自定欄位名稱

好,那我們來看看要如何設定,如果使用$this->validate進行驗證,則範例如下:
$this->validate($request, [
                    'info' => 'required',
                    'data' => 'required',
                ], ['required' => '這是必填喔'],
                    [
                        'info' => '參考資訊',
                        'data' => '資料',
                    ]
                );


第一個參數傳入  request,  第二個傳入驗證欄位及驗證規則,第三個參數為自定義顯示錯誤,第四個參數就是自定義欄位名稱,就是這麼簡單,不過也花了不少時間去查
如果是使用Validator::make,可以使用setAttributeNames 進行設定,範例如下:

$niceNames = array(
    'info' => '參考資訊',
    'data' => '資料',
);

$validator = Validator::make(Input::all(), $rules);
$validator->setAttributeNames($niceNames);


參考連結:
https://segmentfault.com/q/1010000011839409
https://laravel.tw/docs/master/validation
http://blog.tonycube.com/2015/01/laravel-14-form.html
https://www.ccc.tc/article/laravel-validator-custom-crror-messages

2019年7月16日 星期二

如何排除 Laravel 問題:Cannot use object of type stdClass as array in Laravel



在使用DB查詢後取得查詢結果時出現這個錯誤Cannot use object of type stdClass as array ...
查了一下,發現在Laravel好像蠻多人都有遇到這個問題

$data = DB::table('users')->where('id',$id)->first();
if($data) {
    $user->isOpen=$datapen=$data['isOpen'];
 }

原以為他是Array,應該直接這樣取值即可,但就是會報錯
去查了一下原來要改用以下方式取值才不會報錯

$data = DB::table('users')->where('id',$id)->first();
if($data) {
    $user->isOpen=$datapen=$data->isOpen;
 }

不知為何原理,變成物件了? 但如果直接用dd  去看又說它是array
還是先記下來,以後有空再深入瞭解。

2019年7月3日 星期三

Laravel 如何登出系統?



記錄一下,在Laravel未登出前如果導向到登入頁
預設還是會登入的,所以要先手動登出系統才行

如果在Auth之中,則用以下指令即可
$this->guard()->logout();

如果是從Controller 或是其它地方,則可以直接使用Auth物件
if (Auth::check()) {

Auth::logout();

};

2019年6月13日 星期四

Laravel 重新安裝套件


Laravel 重新安裝套件

最近在小試Laravel 一開始執行的還算順利
但不知為何,在下完清cache指令後就都無法正常執行了

php artisan cache:clear
php artisan config:clear
php artisan view:clear
只會出現Error 500

在為了不想花時間追這怪問題(其實也已經花了不少)
所以想說重新再來一次好了

但重新再來一次,發現無法正常運行 出現啟動不了問題
出現了 ...vendor/autoload.php  not Found
查了一下發現是Vendor並沒有在第一次啟用時下載載入

蠻怪的,該不會是先前的project 已載入,所以就不載入? 
看來之後要先去好好看一下Laravel的架構才行

排除方式,執行

composer update

讓他更新下載, 有點久因為算是第一次載入
完成後,第二次建立的專案,就可以正常運行了