使用错误时出现未定义的变量

时间:2019-07-28 16:14:58

标签: php laravel

当我从api路由调用表单时,我已经做了一个简单的表单,它显示了一个错误,即当我使用Web路由调用时,“ errors”是未定义的变量,它工作得很好并且没有显示错误。为什么会这样呢?由于错误是一个预定义的变量,但是为什么会显示错误。

布局文件:

 @extends('layout')

    @section('content')
        <h1 class="title">Simple Form</h1>
        <form method="POST" action="/website/atg/public/projects">
        @csrf
            <div class="field">
            <label class="label" for="name">Name</label>

            <div class="control">
                <input type="text" class="input" name="name" placeholder="Enter Name" value="{{old('name')}}" required>
            </div>
        </div>

        <div class="field">
            <label class="label" for="email">E-mail</label>

            <div class="control">
                <input type="text" class="input" name="email" placeholder="Enter E-mail Address" value="{{old('email')}}" required>
            </div>
        </div>

        <div class="field">
            <label class="label" for="pincode">Pincode</label>

            <div class="control">
                <input type="text" class="input" name="pincode" placeholder="Enter Pincode" value="{{old('pincode')}}" required>
            </div>
        </div>

        <div class="field">
            <div class="control">
                <button type="submit" class="button">Submit</button>
            </div>
        </div>

        @if($errors->any())
        <div class="notification">
        <ul>
            @foreach($errors->all() as $error)
                <li>{{$error}}</li>
            @endforeach
        </ul>
        </div>
        @endif

        </form>
    @endsection

路由文件:

 <?php

    use Illuminate\Http\Request;

    /*
    |--------------------------------------------------------------------------
    | API Routes
    |--------------------------------------------------------------------------
    |
    | Here is where you can register API routes for your application. These
    | routes are loaded by the RouteServiceProvider within a group which
    | is assigned the "api" middleware group. Enjoy building your API!
    |
    */

    /*Route::middleware('auth:api')->get('/user', function (Request $request) {
        return $request->user();
    });
    */

    Route::get('/projects','ATGController@index');
    Route::post('/projects','ATGController@store');
    Route::get('/projects/create','ATGController@create');

控制器文件:

 <?php

    namespace App\Http\Controllers;

    use App\Project;
    use App\Mail\ProjectCreated;
    use Illuminate\Http\Request;

    class ATGController extends Controller
    {
        /**
         * Display a listing of the resource.
         *
         * @return \Illuminate\Http\Response
         */
        public function index()
        {
            return view('projects.index');
        }

        /**
         * Show the form for creating a new resource.
         *
         * @return \Illuminate\Http\Response
         */
        public function create()
        {
            return view('projects.create');
        }

        /**
         * Store a newly created resource in storage.
         *
         * @param  \Illuminate\Http\Request  $request
         * @return \Illuminate\Http\Response
         */
        public function store(Request $request)
        {
             request()->validate([
            'name'=>'required|unique:projects,name',
            'email'=>'required|email|unique:projects,email',
            'pincode'=>'required|digits:6'
            ]);
            $project=Project::create(request(['name','email','pincode']));
            \Mail::to('sbansal1809@gmail.com')->send(
            new ProjectCreated($project)
            );
            //echo '<script>alert("User added sucessfully!")</script>';
            return response()->json($project);
        }

        /**
         * Display the specified resource.
         *
         * @param  \App\Project  $project
         * @return \Illuminate\Http\Response
         */
        public function show(Project $project)
        {
            //
        }

        /**
         * Show the form for editing the specified resource.
         *
         * @param  \App\Project  $project
         * @return \Illuminate\Http\Response
         */
        public function edit(Project $project)
        {
            //
        }

        /**
         * Update the specified resource in storage.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \App\Project  $project
         * @return \Illuminate\Http\Response
         */
        public function update(Request $request, Project $project)
        {
            //
        }

        /**
         * Remove the specified resource from storage.
         *
         * @param  \App\Project  $project
         * @return \Illuminate\Http\Response
         */
        public function destroy(Project $project)
        {
            //
        }
    }

1 个答案:

答案 0 :(得分:0)

您必须返回验证器失败,这样才能在刀片中获得$errors。检查下面的示例以供参考,并将代码更改为您的参数

别忘了导入use Illuminate\Support\Facades\Validator;

 public function store(Request $request){

      $validator = Validator::make($request->all(), [
        'name'=>'required|unique:projects,name',
        'email'=>'required|email|unique:projects,email',
        'pincode'=>'required|digits:6'
       ]);

       if ($validator->fails()) {

        return redirect('/projects/create')
        ->withErrors($validator)
        ->withInput();

       }else{

        $project=Project::create(request(['name','email','pincode']));
        \Mail::to('sbansal1809@gmail.com')->send(
        new ProjectCreated($project)
        );
        //echo '<script>alert("User added sucessfully!")</script>';
        return response()->json($project);
       }
    }