【问题标题】:Laravel Controller update method not workingLaravel 控制器更新方法不起作用
【发布时间】:2015-01-16 13:44:53
【问题描述】:

我是 Laravel 的新手。

我通过作曲家php artisan generate:scaffold citiesway/generator 及其索引页面(创建和存储方法)制作了控制器、模型和视图,运行良好,但我不知道@ 有什么问题987654322@方法。

这是我的 CitiesController 方法(更新):

public function update($id)
{
    $city = City::findOrFail($id);

    $validator = Validator::make($data = Input::all(), City::$rules);

    if ($validator->fails())
    {
        return Redirect::back()->withErrors($validator)->withInput();
    }

    $city->update($data);
    return Redirect::route('admin.cities.index');
}

这是我的模型(城市):

class City extends \Eloquent {
   protected $primaryKey='city_id';

    public static $rules = [
         'name'     => 'required',
         'image'     => 'mimes:jpeg',
         'parent_id' => 'required',
         'name'      => 'required',
         'english_name'=>'unique:cities,english_name|required'

    ];
    protected $fillable = ['name', 'parent_id', 'english_name','population','phone_prefix','image'];
}

这是我的观点(编辑):

<ul>
    {{ Form::model($city,array('route'=>array('admin.cities.update',$city->id),'method'=>'PUT','files'=>true)) }}
    <!--Here I included my form-->
    @include('admin.forms._partial.formcity')
    <li>
        {{ Form::submit('submit') }}
    </li>
    {{ Form::close() }}
</ul>

这是我的路线:

Route::group(array('prefix'=>'admin','before'=>'Auth'),function(){
    Route::resource('cities', 'CitiesController');
});

当我点击提交按钮时,Laravel 抛出这个错误:

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException

注意:我的观点很好。我认为问题出在控制器方法上,该控制器的其他方法如createstore 也很有效。

【问题讨论】:

  • 产生这个问题是因为你的 routes.php 中有一个有缺陷的路由声明
  • 请给我们您的 routes.php
  • @ITroubs 我也添加了路线
  • 一条路线是“admin.cities....”,但表单有一条指向“siteadmin.cities.....”的路线是正确的还是应该指向“ admin.cities.update”?
  • 在 laravel 目录下的命令行中,尝试php artisan routes 并确保您使用的路由名称正确且没有重复的路由名称。

标签: php laravel controller


【解决方案1】:

在您的模型中,您有 protected $primaryKey='city_id';,但在您看来,您有:

{{ Form::model($city,array('route'=>array('admin.cities.update',$city->id),'method'=>'PUT','files'=>true)) }}

我的意思是$city-&gt;id 应该是$city-&gt;city_id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-28
    • 2016-12-07
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多