diff --git a/beike/Admin/Http/Controllers/PagesController.php b/beike/Admin/Http/Controllers/PagesController.php index 50d65d84..b75486e9 100644 --- a/beike/Admin/Http/Controllers/PagesController.php +++ b/beike/Admin/Http/Controllers/PagesController.php @@ -21,34 +21,32 @@ class PagesController $data = [ 'pages' => PageRepo::getList() ]; - return view('admin::pages.pages.index', $data); } - public function create(Request $request) + public function create() { return view('admin::pages.pages.form'); } - public function edit() + public function edit(Request $request, int $pageId) { $data = [ - 'pages' => PageRepo::getList() + 'page' => PageRepo::findByPageId($pageId), ]; - return view('admin::pages.pages.form', $data); } public function store(Request $request) { - $requestData = json_decode($request->getContent(), true); - $page = PageRepo::createOrUpdate($requestData); - return json_success('保存成功', $page); + $requestData = $request->all(); + PageRepo::createOrUpdate($requestData); + return redirect()->to(admin_route('pages.index')); } public function update(Request $request, int $pageId) { - $requestData = json_decode($request->getContent(), true); + $requestData = $request->all(); $requestData['id'] = $pageId; $page = PageRepo::createOrUpdate($requestData); return json_success('更新成功', $page); diff --git a/beike/Admin/Repositories/PageRepo.php b/beike/Admin/Repositories/PageRepo.php index a833bd22..cb07303c 100644 --- a/beike/Admin/Repositories/PageRepo.php +++ b/beike/Admin/Repositories/PageRepo.php @@ -12,16 +12,30 @@ namespace Beike\Admin\Repositories; use Beike\Models\Page; +use Illuminate\Contracts\Pagination\LengthAwarePaginator; class PageRepo { - public static function getList() + /** + * 获取列表页数据 + * @return LengthAwarePaginator + */ + public static function getList(): LengthAwarePaginator { return Page::query()->with([ - 'descriptions' - ])->get(); + 'description' + ])->paginate(); } + + public static function findByPageId($pageId) + { + $page = Page::query()->findOrFail($pageId); + $page->load(['descriptions']); + return $page; + } + + public static function createOrUpdate($data) { $id = $data['id'] ?? 0; @@ -31,8 +45,8 @@ class PageRepo $page = new Page(); } $page->fill([ - 'position' => $data['position'], - 'active' => $data['active'], + 'position' => $data['position'] ?? 0, + 'active' => $data['active'] ?? true, ]); $page->saveOrFail(); diff --git a/beike/Models/Page.php b/beike/Models/Page.php index b28fb562..ecd8ae53 100644 --- a/beike/Models/Page.php +++ b/beike/Models/Page.php @@ -17,13 +17,17 @@ use Illuminate\Database\Eloquent\Relations\HasMany; class Page extends Base { + protected $fillable = [ + 'position', 'active' + ]; + public function description(): HasOne { - return $this->hasOne(ProductDescription::class)->where('locale', locale()); + return $this->hasOne(PageDescription::class)->where('locale', locale()); } public function descriptions(): HasMany { - return $this->hasMany(ProductDescription::class); + return $this->hasMany(PageDescription::class); } } diff --git a/beike/Models/PageDescription.php b/beike/Models/PageDescription.php index be7eef7f..870a6cb8 100644 --- a/beike/Models/PageDescription.php +++ b/beike/Models/PageDescription.php @@ -13,5 +13,7 @@ namespace Beike\Models; class PageDescription extends Base { - + protected $fillable = [ + 'page_id', 'locale', 'title', 'content', 'meta_title', 'meta_description', 'meta_keyword' + ]; } diff --git a/database/migrations/2022_08_08_071126_crate_page.php b/database/migrations/2022_08_08_071126_crate_page.php index 73a1715c..294aef28 100644 --- a/database/migrations/2022_08_08_071126_crate_page.php +++ b/database/migrations/2022_08_08_071126_crate_page.php @@ -20,7 +20,7 @@ return new class extends Migration $table->timestamps(); }); - Schema::create('page_description', function (Blueprint $table) { + Schema::create('page_descriptions', function (Blueprint $table) { $table->id(); $table->integer('page_id'); $table->string('locale');