Dram

Рейтинг
1115
Регистрация
28.06.2008
Эх, как же здорово это сделано в Ларавель - выполняешь команду npm run prod и она пробегается по всему проекту, определяет какие стили ты использовал и генерирует итоговый css

Пишу для тех, кто наткнется на эту тему в поиске. Дальше читая доки, понял что выше я наговнокодил. Нужно так

Делаем именной роут

Route::get('/news/{id}-{alias?}', [App\Http\Controllers\NewsController::class, 'getOne'])->where(['id' => '[0-9]+', 'alias' => '(\w+|-){1,40}'])->name('OneNews');

Делаем модель нужной таблицы, подключаем ее в контроллере

use App\Models\News;

И сам метод контроллера будет выглядеть так

public function getOne($id, $alias = null)
    {
        $newsOne = News::findOrFail($id);
        if ($newsOne->alias !== $alias) {
            return redirect(route('OneNews', ['id' => $id, 'alias' => $newsOne->alias]));
        }
        return view('news_one', ['newsOne' => $newsOne]);
    }

Метод findOrFail позволит получать 404 ошибку при отсутствии ID в базе, а именной роут поможет с редиректом без лишнего кода.

estic #:

С id и дефиса.

нет, именно чисто с id. 

id + дефис будет давать 404 ошибку

И еще нужно добавить проверку на отсутствие ID в базе с редиректом на стандартную 404 страницу

        if(empty($this->news_one[0]->id)){
            return abort(404);
        }

А если роутер изменить так

Route::get('/news/{id}-{alias?}', [App\Http\Controllers\NewsController::class, 'getOne'])->where(['id' => '[0-9]+', 'alias' => '(\w+|-){1,40}']);

т.е. добавить ? после alias сделав параметр необязательным, а функцию так

    public function getOne($id, $alias = null)

Задать дефолтное значение для алиаса, то редиректить на правильный урл будет уже начиная с верного id

Офигеть САМ!!! сделал!! Я в шоке с себя !!

    public function getOne($id, $alias)
    {
        $this->news_one = DB::table('news_items')
            ->where('id', '=', $id)
            ->get();
        if($this->news_one[0]->alias !== $alias){
            return redirect('news/'.$id.'-'.$this->news_one[0]->alias, 301);
        }
        return view('news_one', ['news_one' => $this->news_one]);
    }
LEOnidUKG #:
Это и есть ответ на твой вопрос. Что ещё то надо?

Я не могу сообразить как правильно это сделать в ларе.

Вот моя функция в контроллере

    public function getOne($id, $alias)
    {
        $this->news_one = DB::table('news_items')
            ->where('id', '=', $id)
            ->where('alias', '=', $alias)
            ->get();
        return view('news_one', ['news_one' => $this->news_one]);
    }

Вероятно ее нужно менять по типу - если есть совпадение в базе по ID но алиасы не совпадают, то редирект и вот тут я не знаю как это правильно попробовать согласно синтаксису лары

Я только учу лару - где эта проверка должна быть в контроллере или роуте?  Можно пример? Это же запрос в базу делать надо?
postavkin #:

Резюмирую. ТО что мне нужно сделать получилось, на хост в базу закинул 6 файлов (разбил основной) и запросом оставил уникальные строки.

С Denwer не срослось. Вываливается...

Вы что огромную базу пытаетесь импортировать в МайАдмин через вебинтерфейс?

Большие же базы только по ssh импортировать надо.

P.S. попробуйте для локалки опен сервер https://ospanel.io/  (более юзер флендли чем денвер)

postavkin :

Привет, подскажите, пожалуйста.

php file выполняю считывание файла 70Мб.

Понятно лезет ошибка. А как с ней бороться?

ini_set("memory_limit", "200M");

В начале скрипта или еще больше, если ошибка не пропадает и хостинг позволяет

Кажется понял - баланс акка обновляется раз в месяц  в первых числах, когда там появится сумма которую можно вывести тогда и появится возможность добавить способ вывода.
Всего: 6928