fixed pages

This commit is contained in:
Edward Yang 2022-08-09 15:11:20 +08:00
parent 702d13d560
commit 078d93ee24
5 changed files with 36 additions and 18 deletions

View File

@ -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);

View File

@ -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();

View File

@ -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);
}
}

View File

@ -13,5 +13,7 @@ namespace Beike\Models;
class PageDescription extends Base
{
protected $fillable = [
'page_id', 'locale', 'title', 'content', 'meta_title', 'meta_description', 'meta_keyword'
];
}

View File

@ -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');