【发布时间】:2017-05-17 10:31:15
【问题描述】:
我正在尝试在管理面板中创建页面,管理员可以从中更改站点设置,例如:site title、default country 等。
我已经在名为settings 的数据库中创建了没有 ID 的表,因为我真的不需要它。它将只有一行将被更新。不插入新行。
我已经在我的 route.php 中添加了这一行
Route::get('settings', 'SettingsController@index')->name('admin.settings');
Route::post('settings/update', 'SettingsController@update')->name('admin.settings.update');
这是我在 SettingsController.php 中的更新函数
public function index()
{
$settings = Settings::all();
return view('backend.settings',compact('settings'));
}
public function update( Request $request)
{
$settings->settings_site_title = $request['site_title'];
$settings->settings_item_per_page = $request['item_per_page'];
$settings->settings_default_country = $request['default_country'];
$settings->settings_max_image_post = $request['max_image_post'];
$settings->save();
return redirect()->route('admin.settings')->with('alert-success', ' Success');
}
和表格
@foreach ($settings as $preferences)
{!! Form::open(['route' => 'admin.settings.update','files' => true , 'class' =>'form-horizontal']) !!}
<div class="form-group">
{!! Form::label('site_title', 'Site Name', array('class'=> 'col-sm-2 control-label')) !!}
<div class="col-sm-10">
{!! Form::text('site_title', $preferences->settings_site_title, ['class'=>'form-control', 'placeholder'=>'Enter site name', 'id'=>'site_title']) !!}
</div>
</div>
... some more inputs like ^
{!! Form::close() !!}
@endforeach
当我提交表单时出现此错误:
从空值创建默认对象
更新:模型
class Settings extends Model
{
protected $table = 'settings';
public $timestamps = false;
protected $fillable = [
'settings_site_title',
'settings_item_per_page',
'settings_default_country',
'settings_max_image_post',
];
}
控制器
public function update( Request $request)
{
$settings = Settings::first(); //missed line
$settings->settings_site_title = $request['site_title'];
$settings->settings_item_per_page = $request['item_per_page'];
$settings->settings_default_country = $request['default_country'];
$settings->settings_max_image_post = $request['max_image_post'];
$settings->save();
return redirect()->route('admin.settings')->with('alert-success', ' Success');
}
【问题讨论】:
-
没有id怎么更新?然后尝试匹配一些列,如网站标题,然后获取 id,然后保存