天天看點

Laravel 架構學習筆記(二)Laravel 架構學習筆記(二)

Laravel 架構學習筆記(二)

用了一陣,發現這個架構無敵

四、POST表單

brade中

<form role="form" method="post" action="{{ url('/release/upload') }}">
    {{ csrf_field() }}
    <!--POST表單必須要加的-->
    <div class="box-body">
        <div class="form-group">
            <label for="cate_title">{{$tname}}</label>
            <input class="form-control" name="title">
            <input class="form-control" name="type" style="display:none" value="{{$type}}">
        </div>
    </div>
    <!-- /.box-body -->
    <!--錯誤提示-->
    @if (count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
            <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
    @endif @if(!empty(session('info')))
    <p>
        <p>
            <div class="alert alert-danger">
                <ul>
                    <li>{{session('info')}}</li>
                </ul>
            </div>
            @endif
            <div class="box-footer">
                <button type="submit" name="action" value="edit" class="btn btn-primary">送出</button>
            </div>
</form>
           

控制器中

public function upload(Request $request){
        $table = $request->input('type');
        if($table=='model'){
            $messages = [
                'title.required' => '标題不能為空',
                'title.max' => '标題過長',
            ];
            $rules = [
                'title' => 'required|max:255',
                'file' => 'required',
            ];
            $validator = Validator::make($request->all(),$rules,$messages);
            if ($validator->fails()) {
                return Redirect::back()
                            ->withInput()
                            ->withErrors($validator);
            }else{
                $suc=DB::table($table)->insert(['opus'=>$request->input('title')]);
                return Redirect::back()
                        ->withInput()
                        ->with('info',$suc?"添加成功":"添加失敗");
            }
        }
    }
           

五、傳回json資料

$lesson = DB::table('lesson')->get();
return response()->json([
    'code'=> '1',
    'type' => '3DsMax',
    'data' => $lesson
]);
           

這樣就可以傳回json資料了

六、上傳檔案

brade中

此處利用的ajax的異步處理,其實Laravel中貌似不需要這麼做,這麼做的原因是一開始這塊post請求的位址是七牛雲的一個存儲伺服器,現在我們隻需要修改一下post請求位址就可以直接拿來用了。

<script>
$.ajaxSetup({headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}});
    $(document).ready(function(){
        function upload(){
            var formData = new FormData();
            formData.append('img', $('#selectfile')[].files[]);

            $.ajax({
                type:"POST",
                url:"{{url('/release/upload')}}",
                dataType:"json",
                mimeType: "multipart/form-data",
                contentType: false,
                processData: false,
                data:formData,
                success:function(data){
                    if(data.code){
                        $("#imgurl").val(data.url);
                        $("#filename").val(data.filename);
                    }else{
                        alert(data.msg);
                    }
                },
                error:function(jqXHR){
                    alert("發生錯誤:"+jqXHR.status);
                }
            });
        }
        $("#upload").click(function(){
            upload();
        });
    });
</script>
           

控制器中

public function upload(Request $request){
        if(Auth::user()->authority==||Auth::user()->authority==||Auth::user()->authority==){//上傳權限
            $file=$request->file('img');//擷取post img參數
            $str=$file->store('public');//存儲到storage/app/public中
            return response()->json([   //傳回給ajaxjson
                'code'=>,
                'url' => $str,
                'filename' => $file->getClientOriginalName() //擷取檔案原名
            ]);
        }else{
            return Redirect::back()
                        ->withInput()
                        ->with('info',"添加失敗");
        }

    }