من در سایتم بخشی به اسم تنظیمات دارم فقط باید بروزرسانی بشه ، مثلا مواردی مثل نام سایت ، توضیحات زبان سایت و فعال بودن سایت را کاربر میتونه وارد کنه. اما دارای مشکل هستم
و ارور دارم که در اینجا ارور و کدهای خودمو میفرستم ممنون میشمم کمکم کنید
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'title' cannot be null (SQL: insert into `settings` (`title`, `description`, `keywords`, `lock_site`, `lock_text`, `icon`, `lang`, `admin_mail`, `contact_mail`, `google_accept`, `alexa_accept`, `analytics`, `samandehi`, `updated_at`, `created_at`) values (, , , 0, , , fa, , , , , , , 2018-02-11 13:33:25, 2018-02-11 13:33:25))
کد کنترلر
<?php
namespace App\Http\Controllers\Admin;
use App\Setting;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class SettingController extends Controller
{
public function index()
{
return view('admin.settings.master');
}
public function general()
{
$setting = Setting::firstOrFail();
return view('admin.settings.general',compact('setting'));
}
public function mail()
{
$setting = Setting::firstOrFail();
return view('admin.settings.mail',compact('setting'));
}
public function seo()
{
$setting = Setting::firstOrFail();
return view('admin.settings.seo',compact('setting'));
}
public function update(Request $request,Setting $setting)
{
$setting->title = $request['title'];
$setting->description = $request['description'];
$setting->keywords = $request['keywords'];
$setting->lock_site = $request->has('lock_site') ? 1 : 0;
$setting->lock_text = $request['lock_text'];
$setting->icon = $request['icon'];
$setting->lang = $request['lang'];
$setting->admin_mail = $request['admin_email'];
$setting->contact_mail = $request['contact_email'];
$setting->google_accept = $request['google_accept'];
$setting->alexa_accept = $request['alexa_accept'];
$setting->analytics = $request['analytics'];
$setting->samandehi = $request['samandehi'];
$setting->save();
alert()->success('تنظیمات سایت با موفقیت انجام شد', 'ذخیره شد');
return redirect(route('admin.settings.master.general'));
}
}
کد روت پروژه
$this->group(['prefix' => 'settings'] , function(){
$this->get('/' , 'SettingController@index')->name('settings.master');
$this->get('/general' , 'SettingController@general')->name('settings.general');
$this->patch('/update' , 'SettingController@update')->name('settings.update');
$this->get('/mail' , 'SettingController@mail')->name('settings.mail');
$this->get('/seo' , 'SettingController@seo')->name('settings.seo');
});
کد های view
@extends('admin.master')
@section('content')
<!-- Main content -->
<section class="content">
<!-- box -->
<div class="box">
<div class="box-body">
<form action="{{ route('settings.update') }}" method="post" enctype="multipart/form-data" class="form-horizontal">
{{ csrf_field() }}
{{ method_field('PATCH') }}
<ul class="nav nav-tabs" >
<li role="presentation" class="{{ Route::currentRouteName() == 'settings.general' ? 'active' : '' }}"><a href="https://roocket.ir/{{ route('settings.general') }}" class="nav-link">عمومی</a></li>
<li role="presentation" class="{{ Route::currentRouteName() == 'settings.mail' ? 'active' : '' }}"><a href="https://roocket.ir/{{ route('settings.mail') }}" class="nav-link">مدیریت ایمیل</a></li>
<li role="presentation" class="{{ Route::currentRouteName() == 'settings.seo' ? 'active' : '' }}"><a href="https://roocket.ir/{{ route('settings.seo') }}" class="nav-link">تایید و آنالتیکس</a></li>
</ul>
{{ $slot }}
</form>
</div>
</div>
</section>
@endsection
کد general.php
@component('admin.settings.master')
<div class="tab-content">
<div class="form-horizontal">
<div class="form-group">
<div class="col-md-4 col-xs-12">
<label class="control-label">عنوان سایت</label>
<input type="text" class="form-control" placeholder="عنوان سایت" value="{{$setting->title}}">
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-xs-12">
<label class="control-label">توضیحات سایت</label>
<textarea cols="4" class="form-control" placeholder="توضیحات">{{$setting->description}}</textarea>
</div>
</div>
<div class="form-group">
<div class="col-md-4 col-xs-12">
<label class="control-label">کلمات کلیدی</label>
<input type="text" class="form-control" placeholder="کلمات کلیدی" value="{{$setting->keywords}}">
</div>
</div>
<div class="form-group">
<div class="col-md-4">
<div class="checkbox checkbox-primary">
<input id="checkbox2" type="checkbox" name="status" @if($setting->lock_site) checked="checked" @endif />
<label for="checkbox2">وضعیت فعالیت سایت</label>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-xs-12">
<label class="control-label">متن زمان غیرفعال بودن</label>
<textarea cols="3" class="form-control" placeholder="متن">{{$setting->lock_text}}</textarea>
</div>
</div>
<div class="form-group">
<div class="row">
<label class="col-md-2 text-right control-label">آیکن سایت</label>
<div class="col-md-9">
<input id="ticket-attachment" type="file">
<p class="help-block"><em>فایل شما کمتر از ۱۰۰ کلیوبایت باشد با پسوندهای gif و png امکان پذیر است</em></p>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-2 col-xs-12">
<label class="control-label">تغییر زبان</label>
<select name="lang" id="lang" class="form-control">
<option value="fa">فارسی</option>
<option value="en">انگلیسی</option>
<option value="ar">عربی</option>
</select>
</div>
</div>
<div class="form-group">
<div class="col-md-4 col-xs-12">
<button type="submit" class="btn btn-success btn-sm">ذخیره تنظیمات</button>
</div>
</div>
</div>
</div>
@endcomponentخوب مشکلتون خیلی واضح شما دارین سعی میکنید همه اطلاعات رو اپدیت کنید و اصلا در request اطلاعاتی وجود نداره و اگر ببینید بصورت null هست و احتیاج به انقدر hard code کردن نداره خیلی ساده تره اگر شما از متد update استفاده کنید.
$setting->update();
متود آپدیت را گذاشتم اوکی شد و هیچ خطایی نداد اما هیچ تغییری در در تغییراتی که انجام دادم در دیتابیس انجام نشد. دوباره همان داده ای را نشان داد که قبلا بود.!؟؟ ممنون میشم پاسخ بدید