Laravel framework

Печать / RSS
0
41. php 01.02.2020 / 22:48
Пацак
Сам себя запутал, конечно desc в запросе, спс)
Вот так оно бывает, если по пол дня рыться в коде, начинает все "сливаться" и мозг ни*** понимать уже не хочет.
Изменил: php (01.02.2020 / 22:57)
0
42. php 03.02.2020 / 13:28
Пацак
Укажите на недочет пожалуйста. Посты не создаются, в чем дело никак не разберусь, вроде роут, контроллер все в порядке, никаких ошибок нет! Просто при нажатии на кнопку "создать пост" ничего не происходит. Гляньте не замыленным взглядом.
Файл web.php:

Route::get('/', '[email protected]');
Route::get('index', '[email protected]')->name('index');
Route::get('create', '[email protected]')->name('create');
Route::post('/', '[email protected]')->name('store');


файл create... .php:

<form action="{{route('store')}}" method="post" enctype="multipart/form-data">
@csrf
<h3>Создать пост</h3>
<div class="form-group">
<input type="text" class="form-control" name="title">
</div>
<div class="form-group">
<textarea name="descr" rows="3" class="form-control"></textarea>
</div>
<div class="form-group">
<input type="file">
</div>

<input type="submit" value="Создать пост" class="btn-outline-success">
</form>


метод store в контроллере:

public function store(Request $request)
{
$post = new post();
$post->title = $request->title;
$post->short_title = Str::length($request->title) > 30 ? Str::substr($request->title, 0, 30) . '...' : $request->title;
$post->descr = $request->descr;
$post->author_id = rand(1,10);
if ($request->file('img')) {
$path = Storage::putFile('public', $request->file('img'));
$url = Storage::url($path);
$post->img = $url;
}
$post->save();
return redirect()->route('index');
}


вьюха ни в какие папки не вложена
0
43. Дмитрий 08.02.2020 / 19:07
Малиновые штаны
@php, 1) Во-первых, убедись, что роут создан верно.
Route::post('/', '[email protected]')->name('store');

У тебя роут store ведет на главную страницу сайта. Подозреваю, что у тебя неверно прописано имя контроллера? Перед @ должно быть указано название файла контроллера от корня папки Controllers без расширения php. Например, [email protected] (после собаки - метод в этом контроллере).

В методе store() неверно создается модель. Делай лучше так:
$post = Post::create([
'title' => $request->title,
'short_title ' => Str::limit($request->title, 30, '..'),
'descr' => $request->descr,
'author_id' => mt_rand(1,10)
]);

if ($request->file('img')) {
$path = Storage::putFile('public', $request->file('img'));
$url = Storage::url($path);
$post->img = $url;
}
$post->save();

либо так:
$data = [
'title' => $request->title,
'short_title ' => Str::limit($request->title, 30, '..'),
'descr' => $request->descr,
'author_id' => mt_rand(1,10),
'img' => false
];

if ($request->file('img')) {
$path = Storage::putFile('public', $request->file('img'));

$data['img'] = Storage::url($path);
}

$post_id = Post::insertGetId($data);

Обрати внимание, что твой велосипед можно заменить встроенным методом Laravel:
// вместо этой приблуды
$post->short_title = Str::length($request->title) > 30 ? Str::substr($request->title, 0, 30) . '...' : $request->title;

// используй метод limit
Str::limit($request->title, 30, '..');
Изменил: Дмитрий (08.02.2020 / 19:09)
0
44. php 08.02.2020 / 23:41
Пацак
@DimaVip, если бы был неверно указано имя контроллера, роута, то я б увидел ошибку, но ее нет.
Я думаю здесь нужно отлаживать через режим разработчика в браузере. Ну код наверное верен, использовал подобное неоднократно в разных вариациях. Просто на нажатие кнопки отправки формы нет никакой реакции.
А вот за метод limit спс, про него ничего не знал, поэтому я по классике решал вопрос.
Изменил: php (08.02.2020 / 23:43)
Для выполнения действия необходимо авторизоваться!
Стикеры / Теги / Правила / Топ тем / Топ тем / Поиск