Laravel framework

Печать RSS
1206

P

Чатланин
0
Сам себя запутал, конечно desc в запросе, спс)
Вот так оно бывает, если по пол дня рыться в коде, начинает все "сливаться" и мозг ни*** понимать уже не хочет.
Изменил: php (01.02.2020 / 22:57)
P

Чатланин
0
Укажите на недочет пожалуйста. Посты не создаются, в чем дело никак не разберусь, вроде роут, контроллер все в порядке, никаких ошибок нет! Просто при нажатии на кнопку "создать пост" ничего не происходит. Гляньте не замыленным взглядом.
Файл web.php:

Route::get('/', 'postctr@index');
Route::get('index', 'postctr@index')->name('index');
Route::get('create', 'postctr@create')->name('create');
Route::post('/', 'postctr@store')->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');
    }

вьюха ни в какие папки не вложена

Голубые штаны
+1
php, 1) Во-первых, убедись, что роут создан верно.
Route::post('/', 'postctr@store')->name('store');
У тебя роут store ведет на главную страницу сайта. Подозреваю, что у тебя неверно прописано имя контроллера? Перед @ должно быть указано название файла контроллера от корня папки Controllers без расширения php. Например, myTestController@store (после собаки - метод в этом контроллере).

В методе 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)
P

Чатланин
0
Дмитрий, если бы был неверно указано имя контроллера, роута, то я б увидел ошибку, но ее нет.
Я думаю здесь нужно отлаживать через режим разработчика в браузере. Ну код наверное верен, использовал подобное неоднократно в разных вариациях. Просто на нажатие кнопки отправки формы нет никакой реакции.
А вот за метод limit спс, про него ничего не знал, поэтому я по классике решал вопрос.
Изменил: php (08.02.2020 / 23:43)
P

Чатланин
0
Обновил локальный сервер (може и не в этом дело), в laravel Request стал приходить пустой, что ни делай. У кого-нибудь бывало такое? уже сутки не могу понять в чем дело(( если в адресную строку get-запрос забить-норм, а через $request->input('name') и т.п. - ***, не могу получить.

Господин ПЖ
0
php, проверь приходит ли что-то в $_REQUEST
посмотри что в $request->all();

Голубые штаны
0
php, покажи этот метод контроллера.
P

Чатланин
0
Вантуз-мен, $_REQUEST тоже пустой. работает только, если в адресную строку передать параметр, например site.ru?name=123 и т.д.

Добавлено через 04:25 сек.
Дмитрий,
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;

class HousingSectorController extends Controller
{

    public function setParameters(Request $request)
    {

        $all = $request->all();
        return view('index', ['all' => $all]);
    }

Изменил: php (13.10.2020 / 01:00)
P

Чатланин
0
Может в настройке сервера что-нибудь сделать?
Самое интересное, еще пару дней назад все норм было. Потом обновил open server спустя год, чтоб поддержка последнего пыха была, и обнаружил такую проблему.
Изменил: php (13.10.2020 / 01:12)

Господин ПЖ
0
php, ну возможно форма у тебя неправильная исходный код формы скинь
Попробуй отправить запрос через postman к примеру
Проверь настройки max_input_vars , post-max_size, upload_max_filesize, они все могут влияет на Post
Изменил: Вантуз-мен (13.10.2020 / 03:39)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск