# laravel 協作筆記 (版本使用5.5.40) ## blade.php ``` php : <?php echo $x ?> blade.php :{{$x}} //轉成html碼 {{{$x}}} //不轉換 ``` ## view ### 語法 view("name") ; name為該blade.php的名字 ## 建立專案 在欲創新專案的底下開啟終端機輸入 :::success laravel new ProjectName; ::: 執行Laravel專案需要先利用php開啟一個簡易Web server指令如下 :::info 預設為port 8000 可在 serve 後加上 --port XXXX 更改port php artisan serve 進入網址為DB_Host:port ex:http://127.0.0.1:8000/ ::: ## 資料庫 ### 資料庫連接 修改.env檔中的DB_PORT,DB_DATABASE,DB_PASSWORD,DB_USERNAME :::info 在控制器php頁面需加入 use Illuminate\Support\Facades\DB; ::: ### 資料庫 新增 migration :::info php artisan make:migration create_users_table ::: 執行 migration :::info php artisan migrate ::: 生成登入註冊 :::info php artisan make:auth ::: 在migration 使用 mysql語法 DB::unprepared('mysql 語法') ### 資料庫使用語法 DB::action('action......') 括號內做什麼action就放什麼 範例: :::info DB::select('select * from table'); DB:insert('insert into table (Column1,...) values (Column1,....)') ::: ## Controller ### 建立Controller :::info php artisan make:controller controller名稱 ::: ### Controller版本問題 控制器回應get請求 laravel 6版以上遇到 :::danger Illuminate\Contracts\Container\BindingResolutionException : Target class[] does not exist ::: 解決方法: :::info web.php 加入 use App\Http\Controllers\controller名稱; Route::get('/', "controller名稱@index") 改成 Route::get('/', [controller名稱::class, 'index'] ::: ## Model ### 建立Model :::success MODEL:php artisan make:model MODEL_NAME ::: ## with ## 註冊/加入會員/忘記密碼 php artsian make:auth; :::success 自動生成資料表users php artsian migrate ::: ## Route ### 語法: Route::HTTP動詞('路徑',參數) 依路徑對應至各php,若找不到則顯示404 :::info Route::get('/',function{ return view ("filename") }) ::: :::warning 若在資料夾內 則filaname = foldername.filename ::: [參考筆記](https://www.slideshare.net/shengyou/4-route) --- ## 狀況排除 ### 中文unicode亂碼 ```javascript= json_decode(json_encode($week,false)); ``` ### 在apache2 使用 laravel 的 .htaccss 啟動 apache2 rewrite mode:q ``` sudo a2enmod rewrite sudo systemctl restart apache2 ``` ### laravel bootstrap 3.3.7 => 4.5.x https://github.com/laravelnews/laravel-twbs4 ### laravel專案從github clone下來須重建專案 https://blog.goodjack.tw/2017/03/laravel-clone.html ## 表單POST 需加入{{csrf_field()}} 需要使用Request 請求 --- ## 驗證碼功能Captcha ``` composer require mews/captcha ``` :::info 設定/config/app.php 'providers' => [ // 略... Mews\Captcha\CaptchaServiceProvider::class, ] 'aliases' => [ // 略... 'Captcha' => Mews\Captcha\Facades\Captcha::class, ] ::: 產生設定檔:config/captcha.php(更改樣式用) :::success php artisan vendor:publish ::: 修改/resource/views/auth/login.blade.php 挑位置加入: ```php <div class="form-group"> <label for="captcha" class="col-md-4 control-label">驗證碼</label> <div class="form-group"> <div class="col-md-3"> <input id="captcha" class="form-control" type="captcha" name="captcha" value="{{ old('captcha') }}" required> @if ($errors->has('captcha')) <span class="help-block"> <strong>驗證碼輸入錯誤</strong> </span> @endif </div> <span class="col-md-1 refereshrecapcha"> //換一張圖功能 <a href="/login">{!! captcha_img('flat') !!}</a> #樣式 flat </span> </div> </div> ``` ```php 修改/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php 加入: protected function validateLogin(Request $request) { $this->validate($request, [ $this->username() => 'required|string', 'password' => 'required|string', 'captcha' => 'required|captcha', #新增此行 ]); } ``` 對應路由web.php :::info Route::get('/login/refereshcapcha', 'Auth\LoginController@refereshcapcha'); ::: 修改app/html.../loginController.php 加入: :::info public function refereshcapcha() { return captcha_img('flat'); } ::: ## Laravel表單 用法 ``` composer require "laravelcollective/html":"^5.4.0" ``` config/app.php :::info 'providers' => [ // 加入這行 Collective\Html\HtmlServiceProvider::class, // ... ], 'aliases' => [ // 加入這行 'Form' => Collective\Html\FormFacade::class, 'Html' => Collective\Html\HtmlFacade::class, // ... ], ::: ### 開啟表單 {{Form::open(array('url'=>'foo/bar'))}} {{Form::close()}} ### 下拉式選單 在open及close之間放入 ## laravel安裝 安裝指定版本: composer create-project laravel/laravel=5.5.* composer create-project laravel/laravel 檔案名稱 "5.5.*" [安裝](https://laravel.tw/docs/5.3/installation)