『壹』 laravel的唯一驗證怎麼過濾軟刪除的數據
刪除鏈接
編輯在app/views/articles/index.blade.php文件,在列表視圖每個文章後面,添加刪除菜單:
MENU:
{{ Form::open(array('method' => 'DELETE', 'route' => array('articles.destroy', $article->id))) }}
{{ Form::submit('Delete') }}
{{ Form::close() }}
執行版刪除
修改 ArticlesController 控制器 destroy 動作權的代碼:
public function destroy($id)
{
Article::destroy($id);
return Redirect::route('articles.index');
}
注意,刪除後,直接跳轉到列表頁面。
『貳』 laravel input怎樣防止sql注入
1、資料庫操作端對輸入的值做關鍵詞過濾,
2、對於SQL語句建議不要直接進行拼接,建議使用參數進行賦值。
『叄』 請教各位 Laravel 中的 model 裡面能對某個屬性進行過濾操作嗎
模型 Template 中加個方法試試
public function getImagesAttribute($value)
{
return json_decode($value);
}
『肆』 Laravel查詢構建器如何將匹配數據過濾出去
你指的不起作用,我猜你應該不是用的 Eloquent::save() 去創建的。我建議你在 Request 層就做用戶提交數據的驗證,和處理,這樣Controller 里會更加清晰!
『伍』 laravel 使用Request 驗證form表單
$this->validate($request,[ '驗證的表單名稱(例如name)' => '驗證規則', ],[],[ '驗證的表單名稱(例如name)' => '你想改成的中文(例如 姓名)' ])
『陸』 mysql表默認null 但是傳入空值 laravel怎麼處理是正確姿勢
有兩種方法供你選擇:
使用Laravel集合的map方法。該方法適用於單個表單。
使用中間件。該方法適用於有多個表單
單個表單
可以使用集合的map方法進行過濾,然後使用得到的$params進行操作。
關於裡面函數的具體意義請參考官方文檔。
多個表單
首先推薦看一下官方文檔。
其實也是使用了上面的代碼進行過濾,不過這是在中間件中進行的,只要在需要進行過濾的路由中使用這個中間件即可做到,這樣無需再每一個Controller中寫一遍了。
先用php artisan make:middleware RejectEmptyValues命令創建一個中間件。
此命令將會在app/Http/Middleware目錄內設定一個名稱為RejectEmptyValues的類。
修改RejectEmptyValues的代碼
<?phpnamespace AppHttpMiddleware;use Closure;class RejectEmptyValues{ /**注冊中間件,在app/Http/Kernel.php文件的$routeMiddleware中加入一行
'reject_empty_values'=> ::class,使用中間件示例,
Route::post('/test','TestController@post')->middleware('reject_empty_values');『柒』 Laravel中表單驗證里unique在update時怎麼排除當前記錄
首先確認,後台的用戶表,我設計表叫做badmin,每個管理員有用戶名(),有昵稱(nickname),有郵箱(email),有密碼(password)這里玩個花,使用laravel的migration來建立表(實際上可以用不著使用這個工具建立表)1安裝好最基本的laravel框架2創建migration文件:./artisanmigrate:makecreate-badmin-table3發現app/database/migration/下面多了一個php文件:2014_10_19_090336_create-badmin-table.php4往up和down裡面增加內容;increments('id』);$table->string(『nickname',100)->unique();$table->string('username',100)->unique();$table->string('email',100)->unique();$table->string('password',64);$table->timestamps();});}/***Reversethemigrations.**@returnvoid*/publicfunctiondown(){Schema::drop('badmin』);}}5配置好local的database,app/config/local/database.phpPDO::FETCH_CLASS,'default'=>'mysql','connections'=>array('mysql'=>array('driver'=>'mysql','host'=>'localhost','database'=>'test','username'=>'yejianfeng','password'=>'123456','charset'=>'utf8','collation'=>'utf8_unicode_ci','prefix'=>'',),),'migrations'=>'migrations',);6創建數據表:./artisanmigrate--env=local這個時候去資料庫看,就發現多了一張badmin表,數據結構如下:CREATETABLE——badmin——(——id——int(10)unsignedNOTNULLAUTO_INCREMENT,——nickname——varchar(100)COLLATEutf8_unicode_ciNOTNULL,——username——varchar(100)COLLATEutf8_unicode_ciNOTNULL,——email——varchar(100)COLLATEutf8_unicode_ciNOTNULL,——password——varchar(64)COLLATEutf8_unicode_ciNOTNULL,——created_at——timestampNOTNULLDEFAULT'0000-00-0000:00:00',——updated_at——timestampNOTNULLDEFAULT'0000-00-0000:00:00',PRIMARYKEY(——id——),UNIQUEKEY——badmin_nickname_unique——(——nickname——),UNIQUEKEY——badmin_username_unique——(——username——),UNIQUEKEY——badmin_email_unique——(——email——))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8COLLATE=utf8_unicode_ci;要問這里為什麼多出了create_at和update_at,這是laravel默認為每個表創建的欄位,而且在使用Eloquent進行增刪改查的時候能自動更新這兩個欄位7創建個Model:'require|alpha_num|min:2','username'=>'require','email'=>'required|email|unique:users','password'=>'required|alpha_num|between:6,12|confirmed',];}這里必須要implementsUserInterface和RemindableInterface8把model和Auth關聯上,修改app/config/auth.php'eloquent',//只有驅動為eloquent的時候才有用'model'=>'Badmin',);這里的driver可以是eloquent或者database,使用eloquent就告訴Auth組件說,用戶認證類是Badmin這個類管的。這里的model是有命名空間的,就是說如果你的admin類是\Yejianfeng\Badmin,這里就應該改成『\Yejianfeng\Badmin'9好了,這個時間其實邏輯部分已經搭建完畢了,你已經可以在controller種使用Auth::attempt(XXX)做許可權認證Auth::user()獲取登錄用戶(一個Badmin類)等。10下面要建立一個用戶登錄頁面:11設置路由:'user.login','uses'=>'UserController@getLogin']);Route::get('user/login',['as'=>'login','uses'=>'UserController@getLogin']);Route::post('user/login',['as'=>'login','uses'=>'UserController@postLogin']);//需要登錄驗證才能操作的介面Route::group(array('before'=>'auth』),function(){Route::get(『user/logout',['as'=>'logout','uses'=>'UserController@getLogout']);Route::get('user/dashboard',['as'=>'dashboard','uses'=>'UserController@getDashboard']);});12設置controller:Input::get('email』),'password'=>Input::get(『password』)))){returnRedirect::to(『user/dashboard』)->with(『message',』成功登錄『);}else{returnRedirect::to('user/login』)->with(『message',』用戶名密碼不正確『)->withInput();}}//登出publicfunctiongetLogout(){Auth::logout();returnRedirect::to('user/login』);}publicfunctiongetDashboard(){returnView::make(『user.dashboard』);}//添加新用戶操作publicfunctiongetCreate(){returnView::make(『user.create』);}//添加新用戶操作publicfunctionpostCreate(){$validator=Validator::make(Input::all(),User::$rules);if($validator->passes()){$bAdmin=newBadmin();$bAdmin->nickname=Input::get(『nickname』);$bAdmin->username=Input::get(『username』);$bAdmin->email=Input::get(『email』);$user->password=Hash::make(Input::get(『password』));$user->save();Response::json(null);}else{Response::json(['message'=>『注冊失敗'],410);}}}13設置下filter,app/filter.phpRoute::filter('auth',function(){if(Auth::guest()){if(Request::ajax()){returnResponse::make('Unauthorized',401);}else{returnRedirect::guest('/』);}}});將這里認證失敗後的地址轉到/路徑14設置views/user/login.blade.php
『捌』 laravel表單驗證怎樣禁止跳轉
驗證成功才會跳轉
驗證不成功是不會跳轉的...
實在不行 return false
『玖』 laravel中post表單token是怎麼處理的
token是底層一個類判斷是不是本域名下提交的,如果是可以提交,不是就拋出異常,用來防止跨站攻擊