最近學習了laravel,先簡單談談學習的感受吧
剛開始一周多一點的時間先把laravel的開發文檔看了一遍,,感覺剛開始接觸時的感覺laravel的目錄與thinkphp又不一樣,它們的渲染模板的方式也不一樣,模型的功能又比thinkphp的強大了許多,但是最厲害的地方的是它支持composer安裝許多的模塊,簡單方便。在laravel的文檔中,學到了門面(接口)和契約(接口),還知道了中間件,csrf保護和blade視圖模板及laravel驗證(過濾進入應用的 HTTP 請求提供了一套便利的機制)
在學習完laravel5.3之后,自己寫了個個人博客,寫的時候用到的技術也不多,主要原因是:1.練練手,2.服務器一直空閑着
在寫的時候遇到了一些坑:
1、laravel的php與前台交互:
注意:這些都沒有定義路由名稱,如果使用 as 定義了路由名稱的話,可以使用route()函數來代替url函數
(1)表單:
例:
前台表單:
向定義路由為search_find_blogs 的方法中提交數據:
<form action="{{url('search_find_blogs')}}" method="post"> {{csrf_field()}} <input required="required" type="text" name="blog_name_search" value="Search Blog By name" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Search Blog By name';}"> <input type="submit" value=""> </form>
這個后台處理過后就得通過改變向前台渲染的參數來響應前台
(2)js的ajax,向路由為
例:
function post_form(operate){ $.post("{{url('admin_link_operate')}}",{_token:" {{csrf_token()}}",links_id:get_links_id(),operate:operate},function(data){ alert(data); location.reload(); }); }
這樣方法台只需要返回數據就前台就可以直接接收到了
2.利用js向后台提交文件
表單:
<form id="{{$album->album_id}}album_form"> {{ csrf_field() }} <input type="file" id="{{$album->album_id}}album_cover" class="btn btn-warning" disabled="true" name="album_cover"> </form>
js:
var formData = new FormData($('#'+album_id+'album_form')[0]); $(this).attr('value','編輯'); $.ajax({ url: "{{url('admin_album_edit')}}", type: 'POST', data: formData, //設置同步方式 async: true, //不會從瀏覽器緩存中加載信息 cache: false, //默認值為contentType = "application/x-www-form-urlencoded".在默認情況下,內容編碼類型滿足大多數情況。在 ajax 中 contentType 設置為 false 是為了避免 JQuery 對其操作,從而失去分界符,而使服務器不能正常解析文件 contentType: false, //默認值為true,當設置為true的時候,jquery ajax 提交的時候不會序列化 data,而是直接使用data processData: false, success: function(d){ alert(d); location.reload(); } });
laravel的controller部分還是用$request->file('file_name')來獲得文件
3.
如果使用laravel5.3的模型的自動維護時間,,數據庫的時間存儲為時間戳timestamp或datetime類型,,如果存成int類型,則會出錯
4.在blade模板中如果遇到解析不正確的話可以使用 {{ }} 或{!! !!}
5.
在laravel中如果出現了向后台提交數據不對的情況,一定要先檢查是否向后台提交了 _token':'{{csrf_token()
6.
上傳文件的時候,在form表單上一定要加上enctype="multipart/form-data"屬性,,要不然文件傳不過去
7.
在form表單提交checkbox時,,要將其name上加上 [],要不如果提交多個的話,,只能收到最后一個