$input = [
[2, 'скрипт холодного звонка по продаже услуг'],
[2, 'продажи в переписке'],
[2, 'автоматизация отдела продаж'],
[2, 'заказать скрипт продаж'],
[3, 'доставка еды из ресторана'],
[3, 'еда из ресторана на дом'],
[3, 'доставка еды из ресторана на дом'],
[4, 'доставка товаров из китая в россию'],
[4, 'купить в китае с доставкой в россию'],
[4, 'доставка запчастей из китая в россию'],
];
$output = [];
foreach($input as $item) {
if (!array_key_exists($item[0], $output)) {
$output[$item[0]] = [];
}
$output[$item[0]][] = $item[1];
}
$output = array_map(fn($item) => join(', ', $item), $output);
var_dump($output);
body {
background: black no-repeat / cover;
background-image: var(--bg-image-mobile);
}
@media (min-width: 768px) {
body {
background-image: var(--bg-image-tablet);
}
}
@media (min-width: 1200px) {
body {
background-image: var(--bg-image-desktop);
}
}
<body style="
--bg-image-mobile: url(/images/bg-image-mobile.jpg);
--bg-image-tablet: url(/images/bg-image-tablet.jpg);
--bg-image-desktop: url(/images/bg-image-desktop.jpg);
">
</body>
class DynamicRoutes
{
public function routes(): void
{
/** @var Collection $pageCollection */
$pageCollection = getFromCacheIf(config('cache.pages'), CACHE_PAGES, function () {
try {
return $this->getPages();
} catch (\Exception $exception) {
return new Collection();
}
});
$pageCollection->each(function (Page $page) use ($pageCollection) {
$routeName = ROUTE_PREFIX_PAGE.$page->slug;
$routeUri = $page->getAttribute('url');
$parentRouteName = $page->parent_id
? ROUTE_PREFIX_PAGE.($pageCollection->get($page->parent_id)->slug)
: 'home';
Route::prefix($routeUri)->group(function () use ($page, $routeName, $parentRouteName) {
Route::get('', static function () use ($page) {
return App::call($page->controllerName(), ['page' => Page::findOrFail($page->id)]);
})
->name($routeName)
->breadcrumbs(function (Trail $trail) use ($page, $routeName, $parentRouteName) {
return $trail->parent($parentRouteName)
->push($page->localizedAttribute('title'), route($routeName));
});
switch ($page->controllerName()) {
case GalleryController::class:
$this->galleryRoutes($routeName);
break;
case TourController::class:
$this->tourRoutes($routeName);
break;
case NewsController::class:
$this->newsRoutes($routeName);
break;
}
});
});
}
private function galleryRoutes(string $parentRouteName): void
{
Route::get('{gallery:slug}', [GalleryController::class, 'show'])
->name(ROUTE_GALLERY)
->breadcrumbs(function (Trail $trail, Gallery $gallery) use ($parentRouteName) {
return $trail->parent($parentRouteName)
->push($gallery->localizedAttribute('title'), route(ROUTE_GALLERY, $gallery));
});
}
private function tourRoutes(string $parentRouteName): void
{
Route::get('{tour:slug}', [TourController::class, 'show'])
->name(ROUTE_TOUR)
->breadcrumbs(function (Trail $trail, Tour $tour) use ($parentRouteName) {
return $trail->parent($parentRouteName)
->push($tour->localizedAttribute('title'), route(ROUTE_TOUR, $tour));
});
}
private function newsRoutes(string $parentRouteName): void
{
Route::get('{news:slug}', [NewsController::class, 'show'])
->name(ROUTE_NEWS)
->breadcrumbs(function (Trail $trail, News $news) use ($parentRouteName) {
return $trail->parent($parentRouteName)
->push($news->localizedAttribute('title'), route(ROUTE_NEWS, $news));
});
}
private function getPages(): Collection
{
$pages = Page::whereNotNull('slug')->get()->keyBy('id');
$pages->each(function (Page $page) use ($pages) {
$page->setAttribute('url', $this->buildUrlForPage($page, $pages));
});
return $pages;
}
private function buildUrlForPage(Page $page, Collection $pages): string
{
if (!$page->parent_id) {
return $page->slug;
}
$parentPage = $pages->get($page->parent_id);
return $this->buildUrlForPage($parentPage, $pages).'/'.$page->slug;
}
}
//...
app(DynamicRoutes::class)->routes();
Route::fallback(function () {
return response()->view('errors.404', [], 404);
});
Route::middleware('web')
->namespace('App\\Http\\Controllers')
->group(base_path('routes/web.php'));
$validatedData = $request->validate([
// ... ваши правила валидации ...
]);
$object = MyObject::create($validatedData);
я узнал, pug, например, через расширения или терминал компилируется
<h1>Заголовок</h1>
<p>Текст, много текста</p>
<ul>
<li> пункт списка 1</li>
<li> пункт списка 2</li>
<li> пункт списка 3</li>
</ul>
props: {
'class': String
}
props: {
disabled: Boolean
}
<div :class={disabled: disabled}>
Пытаюсь изучать html и css.
.position()
Description: Get the current coordinates of the first element in the set of matched elements, relative to the offset parent.
let s1 = '1';
let s2 = '2';
console.log(s1 + s2); // '12'
let n1 = 1;
let n2 = 2;
console.log(n1 + n2); // 3
let s1 = '1';
let n2 = 2;
console.log(s1 + n2); // '12'
parseInt()
- в целое числоparseFloat()
- в число с плавающей точкойNumber()
- можно еще так+n2
- или так (это уже своего рода хак, основанный на приведении типов)Number(element1.innerHTML) + Number(element2.innerHTML)