Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
разобрался. Пол года назад писал этот код... не на то подумал)
Для примера, есть у меня вот такой код:
$form = $request->getPost('text');
$file = $request->getFiles('file');
$name = basename($file['name']);
if (move_uploaded_file($file['tmp_name'], ROOT . DIRECTORY_SEPARATOR . $name . '.jpg')) {
$result = 'загружено';
}
$news = new News();
$rs = $news->query();
$this->view->require('form.php', compact('form', 'file', 'result', 'rs'));
На PHP 7 ошибок нет, на 8 ругается:
Warning: Trying to access array offset on value of type null на строки с массивами $file[name] и $file[tmp_name]; И
compact(): Undefined variable $result
Подскажите как исправить. Я не думаю что уместно каждый раз проверять переменные с массивами на null, если переменная создается динамически по ходу выполнения, например $name = basename($file['name'] ?? ''); - тогда конечно ошибка пропадает. Растолкуйте этот момент пжл...
данных много. 1576 ячеек, в каждой по 10, в них от 5 до 10 и т.д.
Есть многомерные массив, при его обходе пришлось использовать вложенные циклы. И вот один из внутренних циклов после отработки (обход массива и запись пройденных данных в другой массив), когда снова до него доходит очередь записывает только что прочитанные данные вместе с предыдущими. Т.о. после первой отработки цикла в массив записались 3 строки данных, после второй 6 строк, при этом первые 3 из предыдущего прохода, после третьей 9 и также уже первые 6 строк - накопительный эффект от предыдущих двух отработок, и т.д. После каждой отработки он тянет за собой данные из предыдущего обращения к циклу и записывает их в конечный массив вместе с новыми данными. Наверное многие сталкивались с этим, подскажите пжл решение проблемы.
function autoLoader($name) {
require 'classes/'.$name.'.php';
}
spl_autoload_register('autoLoader');
Вместо этого я просто могу написать require('такой-то файл').
Если бы я мог запускать эту функцию из любого файла... А так не вижу удобств кроме лишней писанины.
В логах количество обращений к скрипту можно посчитать, а не к конкретному изображению. Количество изображений может быть больше одного. Если подскажешь алгоритм, буду очень признателен.
Подскажите пжл, кто с опытом, как лучше написать счетчик просмотров изображения?
Кто-нибудь помнит команду php artisan для создания файла кэша, а то я его удалил. Помню, что такой командой когда-то пользовался.
Бесспорно! Со следующим сайтом попробую)
В данном случае request->all() не обойтись, мне же все равно нужно указать, что обновлять.
now() тоже пробовал и судя по ошибке результат еще более бесполезен, т.к. now() вообще ничего не подставляет и интерпретируется прямо как строка.
В общем почему мускул ругается не понятно, пока обойдусь отдельным запросом для даты. Спс
В запрос-то все равно надо вставлять имена полей и таблиц, так что великой разницы с моей точки зрения нет. А laravel мне нравится в первую очередь не из-за возможностей Eloquent.
А в чем проблема обновить через Eloquent?
Никаких проблем. У меня все запросы к бд в коде через DB, а тут ни с того, ни с другого неохота разбавлять код или все исправлять.
У меня привычка уже сложилась использовать sql в чистом виде, мне так больше нравится.
DB::update("UPDATE `goods` SET `volume` = $request->volume, `price` = $request->price, `updated_at` = Carbon::now() WHERE `id` = $id");
Ну, по идее такой запрос должен срабатывать? Он выдает ошибку описанную выше.
Я через DB::update запрос делаю. Ставлю в `updated_at` = Carbon::now(), получаю SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax. А если скопировать дату прямо из сообщения об ошибке и вставить в updated_at - то нет проблем.
Почему так - не понятно.
Вроде updated_at вообще должен автоматом обновляться.
А то у меня что-то не обновляется автоматом. Через touch() в модели не обновляет тоже.
Извиняюсь за тупость , но лично я из Вашего сообщения ничего не понял. Можно поподробнее?
Он, видимо, имел в виду, что русскоязычное сообщество laravel упорото настолько что считают полученные знания о фрэймворке коммерческой тайной и ниже собственного достоинства объяснять азы по работе с ним, забывая, что когда-то сами с этого начинали!
понятно
Подскажите у кого была подобная херня. После отправки формы приходит пустой request. В dd/var_dump пусто. Вне laravel та же форма обрабатывается php нормально, в $_POST данные приходят как положено.
Ошибку нашел: @section лишний подключил, весь html перемешался, в теге form между ation не понятно откуда взялись кавычки.
В чем-то недочет спрятался. Код вроде бы верный, но форма с данными не отправляется, вообще при нажатии на кнопку "оправить"
ничего не происходит.
контроллер:
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');
}
файл с формой:
<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>
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');
вьюха ни в какой каталог не вложена
Страницы 1