Laradvel Controller 5.5中的存储方法在服务器上不起作用

时间:2018-01-15 10:43:50

标签: laravel controller

我在laravel 5.5中开发了一个CRUD应用程序 所有方法在本地laravel中工作正常(我的意思是使用命令php artisa serve启动的“模拟器”),但是在xampp中部署应用程序后,我的控制器中的方法存储停止工作(只是这个)!

在我的web.php中,我添加了这条路线:

Route::resource('example','exampleControllerView');

命令php artisan的结果:

            POST     | example                           | example.store        | App\Http\Controllers\exampleControllerView@store    
|        | GET|HEAD  | example                           | example.index        | App\Http\Controllers\exampleControllerView@index  
|        | GET|HEAD  | example/create                    | example.create       | App\Http\Controllers\exampleControllerView@create 
|        | GET|HEAD  | example/{example}                     | example.show         | App\Http\Controllers\exampleControllerView@show  
|        | PUT|PATCH | example/{example}                     | example.update       | App\Http\Controllers\exampleControllerView@update 
|        | DELETE    | example/{example}                     | example.destroy      | App\Http\Controllers\exampleControllerView@destroy
|        | GET|HEAD  | example/{example}/edit                | example.edit         | App\Http\Controllers\exampleControllerView@edit

这是我控制器中的方法存储

public function store(Request $request)

{

$request->validate([
  'name' => 'required|min:4',
  'description'=> 'required',
]);

$example = example::create(['name' => $request->name,'description' => $request->description]);
return redirect('/example/'.$example->id);

}

这是视图创建(网址:http://localhost/project/public/example/create):

    <form action="/example" method="post">
{{ csrf_field() }}
 <div class="form-group">
   <label for="title">example nome</label>
   <input type="text" class="form-control" id="taskTitle"  name="name">
 </div>
 <div class="form-group">
   <label for="description">example descrizione</label>
   <input type="text" class="form-control" id="exampleDescription" name="description">
 </div>
 @if ($errors->any())
   <div class="alert alert-danger">
       <ul>
           @foreach ($errors->all() as $error)
               <li>{{ $error }}</li>
           @endforeach
       </ul>
   </div>
 @endif
 <button type="submit" class="btn btn-primary">Submit</button>

在提交按钮后,我在新页面中看到了这个uri:

http://localhost/example

并在页面中出现404错误:找不到对象! 此服务器上不存在请求的URL。

我认为这是路由和网址的问题,但我不知道为什么在本地工作正常......

感谢进步

2 个答案:

答案 0 :(得分:0)

更改此行 -

 <form action="/example" method="post">

对此 -

 <form action="/project/public/example" method="post">

更好地使用Laravel Collective,这会自动配置您的基本路径,并具有许多其他好处,例如csrf protection

答案 1 :(得分:0)

您的代码应该可以正常运行。它将用户重定向到具有已创建实体ID的show方法。而不是使用模型绑定,尝试这样做:

public function show($id)
{
    dd('The show method was executed and ID is ' . $id);
    ....
}