fixed page auto complete and get name by id

This commit is contained in:
Edward Yang 2022-08-11 11:10:12 +08:00
parent fc6cb5c8dc
commit 678969331b
3 changed files with 54 additions and 4 deletions

View File

@ -12,6 +12,7 @@
namespace Beike\Admin\Http\Controllers;
use Beike\Models\Page;
use Beike\Repositories\ProductRepo;
use Illuminate\Http\Request;
use Beike\Admin\Repositories\PageRepo;
@ -59,4 +60,27 @@ class PagesController
PageRepo::deleteById($pageId);
return redirect()->to(admin_route('pages.index'));
}
/**
* 搜索页面标题自动完成
* @param Request $request
* @return array
*/
public function autocomplete(Request $request): array
{
$products = PageRepo::autocomplete($request->get('name') ?? '');
return json_success('获取成功!', $products);
}
/**
* 获取单页名称
* @param Page $page
* @return array
*/
public function name(Page $page): array
{
$name = $page->description->title ?? '';
return json_success('获取成功', $name);
}
}

View File

@ -12,6 +12,7 @@
namespace Beike\Admin\Repositories;
use Beike\Models\Page;
use Beike\Models\Product;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
class PageRepo
@ -69,4 +70,28 @@ class PageRepo
$page->descriptions()->delete();
$page->delete();
}
/**
* 页面内容自动完成
*
* @param $name
* @return array
*/
public static function autocomplete($name): array
{
$pages = Page::query()->with('description')
->whereHas('description', function ($query) use ($name) {
$query->where('title', 'like', "{$name}%");
})->limit(10)->get();
$results = [];
foreach ($pages as $page) {
$results[] = [
'id' => $page->id,
'title' => $page->description->title,
'status' => $page->active
];
}
return $results;
}
}

View File

@ -9,7 +9,6 @@ Route::prefix($adminName)
->middleware(['admin'])
->name("{$adminName}.")
->group(function () {
Route::get('brands/autocomplete', [Controllers\BrandController::class, 'autocomplete'])->name('brands.autocomplete');
Route::get('login', [Controllers\LoginController::class, 'show'])->name('login.show');
Route::post('login', [Controllers\LoginController::class, 'store'])->name('login.store');
@ -17,18 +16,17 @@ Route::prefix($adminName)
Route::post('forgotten/send_code', [ForgottenController::class, 'sendVerifyCode'])->name('forgotten.send_code');
Route::post('forgotten/password', [ForgottenController::class, 'changePassword'])->name('forgotten.password');
Route::get('categories/autocomplete', [Controllers\CategoryController::class, 'autocomplete'])->name('categories.autocomplete');
Route::get('products/autocomplete', [Controllers\ProductController::class, 'autocomplete'])->name('products.autocomplete');
Route::middleware('admin_auth:' . \Beike\Models\AdminUser::AUTH_GUARD)
->group(function () {
Route::get('/', [Controllers\HomeController::class, 'index'])->name('home.index');
Route::get('brands/names', [Controllers\BrandController::class, 'getNames'])->name('brands.names');
Route::get('brands/autocomplete', [Controllers\BrandController::class, 'autocomplete'])->name('brands.autocomplete');
Route::resource('brands', Controllers\BrandController::class);
Route::get('brands/{id}/name', [Controllers\BrandController::class, 'name'])->name('brands.name');
Route::resource('categories', Controllers\CategoryController::class);
Route::get('categories/autocomplete', [Controllers\CategoryController::class, 'autocomplete'])->name('categories.autocomplete');
Route::get('categories/{id}/name', [Controllers\CategoryController::class, 'name'])->name('categories.name');
Route::resource('customers', Controllers\CustomerController::class);
@ -80,8 +78,10 @@ Route::prefix($adminName)
// 单页
Route::middleware('can:pages_index')->get('pages', [Controllers\PagesController::class, 'index'])->name('pages.index');
Route::middleware('can:pages_index')->get('pages/autocomplete', [Controllers\PagesController::class, 'autocomplete'])->name('pages.autocomplete');
Route::middleware('can:pages_create')->get('pages/create', [Controllers\PagesController::class, 'create'])->name('pages.create');
Route::middleware('can:pages_show')->get('pages/{code}/edit', [Controllers\PagesController::class, 'edit'])->name('pages.edit');
Route::middleware('can:pages_show')->get('pages/{page}/name', [Controllers\PagesController::class, 'name'])->name('pages.name');
Route::middleware('can:pages_create')->post('pages', [Controllers\PagesController::class, 'store'])->name('pages.store');
Route::middleware('can:pages_update')->put('pages/{page}', [Controllers\PagesController::class, 'update'])->name('pages.update');
Route::middleware('can:pages_delete')->delete('pages/{page}', [Controllers\PagesController::class, 'destroy'])->name('pages.destroy');
@ -92,6 +92,7 @@ Route::prefix($adminName)
Route::get('products/trashed', [Controllers\ProductController::class, 'trashed'])->name('products.trashed');
Route::get('products/{id}/name', [Controllers\ProductController::class, 'name'])->name('products.name');
Route::get('products/names', [Controllers\ProductController::class, 'getNames'])->name('products.names');
Route::get('products/autocomplete', [Controllers\ProductController::class, 'autocomplete'])->name('products.autocomplete');
Route::resource('products', Controllers\ProductController::class);
Route::resource('regions', Controllers\RegionController::class);