我正在尝试使用Laravel 5.4在cpanel服务器上部署涉及基本CRUD操作的项目。 我试图将一个项目插入我的数据库。我的更新和删除代码似乎正在工作,但插入不是。
请注意,在Localhost上一切正常,但在服务器上插入不是。
这里是代码和不同的php文件。 我的控制器是gendersController,它具有所有CRUD功能。
Web.php(性别路线)
Route::resource('/genders','gendersController');
Create.php(我们看到一个包含单个字段和提交按钮的表单的视图)
@extends('layout.app')
@section('body')
<br>
<a href="/genders" class="btn btn-info" >Back</a>
<div class="col-lg-4 col-lg-offset-4">
<h1>{{substr(Route::currentRouteName(),8)}} item</h1>
<form class="form-horizontal" action="/genders/@yield('editid')"
method="POST">
{{csrf_field()}}
@section('editMethod')
@show
<fieldset>
<div class="form-group">
<div class="col-lg-10">
<label>Gender Type <input type="text" class="form-control"
name="gendertypes" id="gendertypes" value="@yield('editgendertypes')">
</label>
<br>
<button type="submit" class="btn btn-success">Submit</button>
</div>
</div>
</fieldset>
</form>
@include('partial.errors')
</div>
@endsection
gendersController.php(性别控制器)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\gender;
use DB;
class gendersController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$genders= gender::paginate(1000);
return view('gender.index',compact('genders'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('gender.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$gender = new gender;
$this->validate($request,[
'gendertypes'=>'required',
]);
$gender->gendertypes=$request->gendertypes;
$gender->save();
session()->flash('message','Added Successfully');
return redirect('/genders');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
return $id;
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$gender = gender::find($id);
return view('gender.edit',compact('gender'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$gender = gender::find($id);
$gender->gendertypes=$request->gendertypes;
$gender->save();
session()->flash('message','Updated Successfully');
return redirect('/genders');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$gender=gender::find($id);
$gender->delete();
session()->flash('message','Delete Successfully');
return redirect('/genders');
}
}
以下是图片
主视图(这是显示数据库中的所有数据。还有添加按钮
url:domainname / genders
![性别观点]:http://imgur.com/a/mqEq3
添加新的性别视图
url:domainname / genders / create
![创建视图]:http://imgur.com/a/9Houv
由于某种原因添加后,我被重定向到主视图页面而没有任何插入到数据库中(因此,新数据不会显示在主视图页面上)
无法找到错误!!
答案 0 :(得分:0)
检查您的表单发布到的网址。因为您对表单/genders/x
中的网址进行了硬编码,而不是使用生成的网址相对于您的安装文档根目录的命名路由,表单将发布到
http://your.domain.com/genders/
而不是
http://your.domain.com/some_folder_name/genders
这就是为什么在localhost上一切正常,但是一旦你在子目录中部署它就不会。
您正在使用资源路由,因此route('genders.store')
在您的视图中应该可以正常运行。通过php artisan route:list
检查可用的路线及其名称。
旁注:尝试并避免将文件放在Laravel的公共路径之外的public_html目录(或公共子目录)。这就是为什么某些目录和文件在文档根目录之外的原因。