Важная информация
Показано с 1 по 3 из 3

Тема: Как поставить slug в laravel 5.5 без применения сторонних решений?

  1. #1 Как поставить slug в laravel 5.5 без применения сторонних решений? 
    Новичок
    Регистрация
    04.03.2018
    Сообщений
    1
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Подскажите как в данном контроллере сделать так, чтобы slug автоматически добавлялся в базу, а не выскакивала ошибка:
    PHP Code:
    1. SQLSTATE[HY000]: General error: 1364 Field 'slug' doesn't have a default value (SQL: insert into `posts` (`title`, `date`, `description`, `content`, `user_id`, `updated_at`, `created_at`) values (Статья 4444, 2018-03-04, <p>Супер статья которая не опубликуется</p>, <p>Полюбому не опубликуется</p>, 10, 2018-03-03 21:36:45, 2018-03-03 21:36:45))


    Хочу отметить, что отсидел за гуглом 4 часа, понаходил кучу разной информации, но нигде нет конкретики. Просто тупо
    PHP Code:
    1. $title = str_slug('Laravel 5 Framework', '-');


    Грубо говоря, все сводится к данной строке или к еще более старым непонятным вариантм. Но куда её вставить чтобы она работала в моем конкретном случае? Как бы я ни пытался какие комбинации и хитрости делать, ничего не выходит.

    Необходимо, чтобы title преобразовывался в slug и к нему прибавлялся id статьи.
    По принципу примерно такому:
    PHP Code:
    1. if ([Ссылки могут видеть только зарегистрированные пользователи. ](Post::find(DB::table('posts')->[Ссылки могут видеть только зарегистрированные пользователи. ]('id'))))
    2.                 $last_id = 0;
    3.             else
    4.                 $last_id = Post::find(DB::table('posts')->[Ссылки могут видеть только зарегистрированные пользователи. ]('id'))->id;
    5.  
    6.             $last_id++;
    7. 'slug' => str_slug($title['title']) . "-" . $last_id,


    Вот собственно код контроллера статей:
    PHP Code:
    1. <?php
    2.  
    3. namespace App\Http\Controllers\Admin;
    4.  
    5. use App\Post;
    6. use App\Chainword;
    7. use App\Category;
    8. use Illuminate\Support\Facades\DB;
    9. use Illuminate\Http\Request;
    10. use App\Http\Controllers\Controller;
    11.  
    12. class PostsController extends Controller
    13. {
    14.     /**
    15.      * Display a listing of the resource.
    16.      *
    17.      * @return \Illuminate\Http\Response
    18.      */
    19.  
    20.  
    21.     public function index()
    22.     {
    23.         $posts = Post::all();
    24.         return view('admin.posts.index', ['posts'=>$posts]);
    25.     }
    26.  
    27.     /**
    28.      * Show the form for creating a new resource.
    29.      *
    30.      * @return \Illuminate\Http\Response
    31.      */
    32.     public function create()
    33.     {
    34.         $categories = Category:<img src="http://iforum.pro/images/smilies/tongue.png" border="0" alt="" title="Stick Out Tongue" class="inlineimg" />luck('title', 'id')->all();
    35.         $chainwords = Chainword:<img src="http://iforum.pro/images/smilies/tongue.png" border="0" alt="" title="Stick Out Tongue" class="inlineimg" />luck('title', 'id')->all();
    36.  
    37.         return view('admin.posts.create', [Ссылки могут видеть только зарегистрированные пользователи. ](
    38.             'categories',
    39.             'chainwords'
    40.         ));
    41.  
    42.     }
    43.  
    44.     /**
    45.      * Store a newly created resource in storage.
    46.      *
    47.      * @param  \Illuminate\Http\Request  $request
    48.      * @return \Illuminate\Http\Response
    49.      */
    50.     public function store(Request $request)
    51.  
    52.     {
    53.       $this->validate($request, [
    54.             'title' =>'required',
    55.             'content' => 'required',
    56.             'date' => 'required',
    57.             'image' => 'nullable|image'
    58.         ]);
    59.  
    60.  
    61.         $post = Post::add($request->all());
    62.         $post->uploadImage($request->[Ссылки могут видеть только зарегистрированные пользователи. ]('image'));
    63.         $post->setCategory($request->get('category_id'));
    64.         $post->setChainwords($request->get('chainwords'));
    65.         $post->toggleStatus($request->get('status'));
    66.         $post->toggleFeatured($request->get('is_featured'));
    67.  
    68.         return redirect()->route('posts.index');
    69.     }
    70.  
    71.     /**
    72.      * Show the form for editing the specified resource.
    73.      *
    74.      * @param  int  $id
    75.      * @return \Illuminate\Http\Response
    76.      */
    77.     public function edit($id)
    78.     {
    79.         $post = Post::find($id);
    80.         $categories = Category:<img src="http://iforum.pro/images/smilies/tongue.png" border="0" alt="" title="Stick Out Tongue" class="inlineimg" />luck('title', 'id')->all();
    81.         $chainwords = Chainword:<img src="http://iforum.pro/images/smilies/tongue.png" border="0" alt="" title="Stick Out Tongue" class="inlineimg" />luck('title', 'id')->all();
    82.         $selectedChainwords = $post->chainwords->pluck('id')->all();
    83.  
    84.         return view('admin.posts.edit', [Ссылки могут видеть только зарегистрированные пользователи. ](
    85.             'categories',
    86.             'chainwords',
    87.             'post',
    88.             'selectedChainwords'
    89.         ));
    90.     }
    91.  
    92.     /**
    93.      * Update the specified resource in storage.
    94.      *
    95.      * @param  \Illuminate\Http\Request  $request
    96.      * @param  int  $id
    97.      * @return \Illuminate\Http\Response
    98.      */
    99.     public function update(Request $request, $id)
    100.     {
    101.         $this->validate($request, [
    102.             'title' =>'required',
    103.             'content' => 'required',
    104.             'date' => 'required',
    105.             'image' => 'nullable|image'
    106.         ]);
    107.  
    108.         $post = Post::find($id);
    109.         $post->edit($request->all());
    110.         $post->uploadImage($request->[Ссылки могут видеть только зарегистрированные пользователи. ]('image'));
    111.         $post->setCategory($request->get('category_id'));
    112.         $post->setChainwords($request->get('chainwords'));
    113.         $post->toggleStatus($request->get('status'));
    114.         $post->toggleFeatured($request->get('is_featured'));
    115.  
    116.         return redirect()->route('posts.index');
    117.     }
    118.  
    119.     /**
    120.      * Remove the specified resource from storage.
    121.      *
    122.      * @param  int  $id
    123.      * @return \Illuminate\Http\Response
    124.      */
    125.     public function destroy($id)
    126.     {
    127.         Post::find($id)->remove();
    128.         return redirect()->route('posts.index');
    129.     }
    130.  
    131.  
    132. }
    Ответить с цитированием  
     

  2. #2  
    Администратор Аватар для rovico
    Регистрация
    17.04.2014
    Адрес
    Ярославль
    Сообщений
    245
    Сказал(а) спасибо
    17
    Поблагодарили 287 раз(а) в 162 сообщениях
    Записей в блоге
    2
    Я не имею опыта в laravel, но могу посоветовать такой алгоритм действий:

    1) Разобраться, каким образом и в каком месте laravel делает сохранение записи
    2) Найти какой-то способ выполнить свой код перед сохранением записи, т.е. когда заполняется или уже заполнена модель
    3) заполнить поле slug методом str_slug()


    P.S. Ошибка в бд из-за того, что в поле slug нет значения по умолчанию
    Ответить с цитированием  
     

  3. 2 пользователя(ей) сказали cпасибо:

    >Quiet Snow< (07.03.2018), Free Admin (06.03.2018)

  4. #3  
    Администратор Аватар для rovico
    Регистрация
    17.04.2014
    Адрес
    Ярославль
    Сообщений
    245
    Сказал(а) спасибо
    17
    Поблагодарили 287 раз(а) в 162 сообщениях
    Записей в блоге
    2
    Вот в документации по Laravel нашёл, там есть какие-то преобразователи https://laravel.ru/docs/v5/eloquent-mutators

    Вот ещё на stackOverflow такая же тема, как тут https://stackoverflow.com/questions/...ug-before-save
    Ответить с цитированием  
     

  5. 2 пользователя(ей) сказали cпасибо:

    >Quiet Snow< (07.03.2018), Free Admin (06.03.2018)

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Помогите сделать выставление счёта в qiwi без сторонних сайтов...
    от Anonimus в разделе Общие вопросы программирования
    Ответов: 0
    Последнее сообщение: 13.10.2016, 21:18
  2. Обсуждение готовых решений Visual Basic
    от >Quiet Snow< в разделе Visual Basic
    Ответов: 69
    Последнее сообщение: 07.01.2016, 22:15
  3. Организация готовых решений в разделе.
    от The trick в разделе Visual Basic
    Ответов: 13
    Последнее сообщение: 21.02.2014, 05:21
  4. Ответов: 2
    Последнее сообщение: 12.09.2012, 17:27
  5. Ответов: 0
    Последнее сообщение: 31.05.2011, 05:09
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •