Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Добрый день. Столкнулся со странным поведением кодировки UTF-8 , точнее кирилица , и такие символы как ą č ę ė į š ų ū в подшаблонах .
В основном шаблоне <meta charset="utf-8"> присутствует в заголовке Head . И что , самое интересное, в основном шаблоне все отображается нормально, а в подшаблоне , или ?????????????? или крякозябры . Кто столкнулся и где искать решение проблемы ? Данные заносятся с клавиатуры , а не берутся из таблицы. Заранее спасибо.
<<У меня в БД три таблицы с разными продуктами, тоесть в зависимости от категории продукты могут выводиться из разных таблиц.>>
Вы имеете хоть какое нибудь представление о нормализации баз данных ? Таблица продуктов должна быть одна и связана с таблицей категории . Как то такё ))
Странный форум какой то.
Я не думаю , что вопрос из серии настолько глупых , или настолько сложных. И я не думаю , что никто не сталкивался с подобной ситуацией . Неужели так трудно поделиться личным опытом ??? Или у акул Laravel погоны с плеч упадут ?
ОК! Вопрос с повестки дня снимается. Как говорится Google нам в помощь , как нибудь разберемся сами . ))
Всем хорошего дня и , спасибо за оказанное внимание. Таки нашлись люди , которые хоть просмотрели тему. ))
Всем всего самого наилучшего !!!
Добрый день уважаемые гуру Laravel. ))
Прошу ламера натолкнуть на мысль , так сказать подсказать логику . Мне нужно занести в базу данных , данные в две таблицы , основную и подчиненную связанных один ко многим . Например занесение документа счет-фактура . Один из вариантов можно сделать на примере покупательской корзины , как описывается в книШках . Т.е добавляется товар в корзину во временную таблицу. Затем создается заказ и данные заносятся в таблицы заказ и детали заказа , а затем таблица корзина очищается. Мне этот метод не очень по душе , так как все таки это не интернет-магазин .
А будет программа типа складского учета .
Может есть другие варианты . ???
Я не прошу выложить готовый пример мне на блюдечке, просто хотелось бы узнать как реализовываются такие проэкты на Laravel, может эта тема обсуждалась где нибудь ??? Или поделитесь мыслями так сказать дайте направление мышления.
И как реализуется в браузере идея главной и подчиненной формы ???
Заранее спасибо.
Route::get('hello1', function ()
{$user=["one","two","free"];
return view('hello1', compact('user'));});
И лично мне , не нравится такая ситуевина. Мне как то более по душе писать функции в контроллерах.
В роуте у Вас переменная $ user ,а в шаблоне в цикле foreach она уже как $users . Скорее всего ошибка по этой причине .
Перекинули сайт на другой сервер , заработало нормально . Первая заугрузка с 4-5 сек. , снизилась до 1,1сек. Так что еще поиграйтесь с серверами.
Я тоже столкнулся с такой проблемой . И что самое интересное тормозит при первой загрузке . Далее вроде как работает нормально. Затем , если страницу не трогать несколько минут и сделать Refresh опять тормоза . И что самое интересное ,опыты проводил на чистом проэкте . Т.е своего кода практически не было . Где то в инете прочитал, что Laravel при загрузке загружает очень много ненужных модулей . Smarty по сравнению с Laravel летает, но на Laravel быстрее и удобнее можно сделать проэкт. Вот и приходится чем то жертвовать , или скорость или удобство разработки.
Топик можно закрывать Всем спасибо за оказанную помощь и понимание.
Добрый день. В оредной раз обращаюсь за помощью . Работая , а вернее изучая Laravel , я начал замечать странное поведение маршрутов и контроллеров . Самостоятельно пока ответа на вопрос не нашел , но очень хочется разобраться в причине . А именно , имеет ли значение порядок расположения маршрутов в файле. Если да , то по какому принципу срабатывают маршруты , и где можно прочитать правила или рекомендации написания маршрутов . Во всех документациях только краткое описание. Вот например пример из рабочего проэкта.
Имеютса два маршрута . Если эти два маршрута расположены в таком порядке. То все работает нормально . Но если я их поменяю местами , то возникает ошибка .
/**************************** CartController *************************/
Route::get('shopping/{product_id}', 'ShoppingcartController@uzsakymas')->name('uzsakymas');/**************************** ProductController *************************/
Route::get('/{department}/{department_id}','ProductController@product_department')->name('product_department');
/**************************** ProductController *************************/
Route::get('/{department}/{department_id}','ProductController@product_department')->name('product_department');
/**************************** CartController *************************/
Route::get('shopping/{product_id}', 'ShoppingcartController@uzsakymas')->name('uzsakymas');
Вот код ошибки.
ErrorException (E_ERROR)
Trying to get property 'name' of non-object (View: C:\XAMPP\htdocs\apsaugajums\resources\views\products\product_list.blade.php)
Очень хотелось бы разобраться в причине возникновения ошибки. Или ткните носом , может эта тема уже где то обсуждалась. Заранее спасибо.
Все ОК ! Пример рабочий . Это в моей голове были глюки. Спасибо все откликнувшемся . !!!
Проблема может быть в разрядности системы - там, кажись, разные версии драйверов.
Короче драйвера и разрядность здесь ни при чем. я опробовал подключение используя PDO PHP на том же компе , подключается без проблем.
Вся проблема в синтаксисе Laravel . Или я не правильно что то делаю , или автор опубликовал не рабочий пример , хотя я так думаю , что перед публикацией тестировали. Значит я где то глюкаю. А гуру Laravel как всегда помочь отказываются . Все коды и примеры держат в строжайшем секрете. Ну что ж . Хозяин - барин . Видно я так и не узнаю как подключиться из Laravel к базе MS Access . А так хотелось . ))
Проблема может быть в разрядности системы - там, кажись,
Sorry . Я не огласил полностью все реквизиты . Laravel 5.7.13 , PHP 7.2 , MS Office и MS Access 2010 - 32 bit., Windows 10 -64 bit. Но драйвер есть только 32 - bit . Как я уже описывал вначале он совсем не видел драйвера , затем я погуглил и нашел , что нужно включить в php.ini PDO_ODBC . Теперь он пишет ошибку имени , я уже перепробовал по-разному , если прописываю полностью имя Microsoft Access Driver (*.mdb,*.accdb) , тогда ошибка
SQLSTATE[IM010] SQLDriverConnect: 0 [Microsoft][ODBC Driver Manager] Data source name too long (0)
.
Вот и спрашиваю , пробововал ли кто подключаться через ODBC , может где нибудь эта тема обсуждалась? Еще , где то проскользнула фраза , утверждать не буду , что для PHP 7.2 пока нет драйвера , а только для 5.6 . Может в этом проблема ? И я зря мучаюсь. Не хотелось бы переустанавливать XAMPP с 7.2 на 5.6 . Короче буду рад хоть какой нибудь информации и полезной и бесполезной. Заранее спасибо.
Опять я начинаю разговаривать сам с собой. ))
В файле php.ini включил PDO ODBC , теперь другая ошибка , ответ на которую не могу найти.
SQLSTATE[IM002] SQLDriverConnect: 0 [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0)
Если я правильно понимаю , то он не видит DSN с именем созданного драйвера MS Access , но DSN с таким именем есть ? Где копать ? Подскажите. ))
Добрый день . Сделал попытку подключения из Laravel к базе данных Access . Поиском по интернету нашел вот такое .
https://github.com/zoilomora/laravel-msaccess
Все сделал по инструкции , но в результате получаю такое.
Doctrine \ DBAL \ Driver \ PDOException
could not find driver
Previous exceptions
Может кто нибудь может помочь советом или кинуть ссылку . Заранее спасибо.
робот то не попадет
Ну теоретитески Вы правы , в данном случае эта ошибка возникает в том случае , если не авторизованный пользователь будет пытаться получить допступ напрямую используя get запрос например к страницам списка пользователей или на страницу редактирования товара предназначенной для администраторов.В принципе простой пользователь ,может и не будет знать о наличии таких страниц. Это лично я сам тестирую свое приложение на предмет безопасности , так сказать занимаюсь хаккерством на своем сайте . ))
Так , что я не думаю , что роботы-поисковики будут заниматься такой же ерундой как я. ))
вернее сначала проверяйте аутентификаццию потом права и все ок
с аунтефикацией и распределением прав доступа все нормально , никаких ошибок не возникает . Я уже сказал , что ошибка может возникнуть например , если не авторизованный пользователь наберет в строке запроса например catalog-admin , тогда и возникает эта ошибка отсутствие прав доступа.
ну и отдавайте 403 эта ошибка для этого и создана
Лично меня ничего не смущает.И мне без разницы какой код ошибки , если я знаю от чего она произошла. Но, я уже сказал , что в интернете проскакивают такие фразы типа.(Не буду давать ссылку на сайт , а просто процитирую)
Для SEO-оптимизатора наличие на сайте страниц с такой ошибкой недопустимо. Поисковики крайне негативно относятся к факту того, что страница с ошибкой 403 доступна для индексации и видна в поисковой выдаче – выходит, она не имеет информационной ценности и являет собой обыкновенный мусор или того хуже – сгенерированный под запрос дорвей. Крайне важно найти на сайте все страницы с ошибкой 403 и запретить их индексацию через robots.txt
Вот просто и хотелось услышать мнение Бывалых , насколько эти факты достоверные. Спасибо .
ты сделал по документации, всё работает и ты спрашиваешь "насколько это криво?". какого ответа ты ожидаешь интересно?! что делать по примерам из доков плохо или чего?
Вот тот то меня и смутило , что я сделал по документации (кстати ничего против не имею), но я уже описал мои опасения. Что при нажатии в браузере на F12 я вижу переадресацию все равно с кодом 403 , а погуглив , я прочитал , что поисковые системы SEO не очень то приветствуют переадресацию с кодом 403 , вот поэтому и спрашиваю мнения. Как делают более опытные спецы.
авторизация это предоставление права на действие.
Спасибо за ссылку , я имею небольшое представление , но обязательно еще раз изучу.
Спасибо , что ответили , но хотелось бы что нить поконкретнее. Например , где можно было бы посмотреть насчет кодов ошибок . Как то же Laravel определяет ? Или он просто по событиям группирует и выдает средний код ошибки ? Но еще раз спасибо. ))
Куда подевались все акулы Laravel???? Или это запрещенная тема??? Я вчера полазал по модулю Handler . Но никак не получилось из массива $exception извлечь номера ошибок такие как 403,404,500 и так далее. Единственное чего добился так это обработку события Ошибка авторизации и аунтефикации . Перерыл кучу инфы в инете , но так ничего толкового по Laravel не нашел. Неужели никто не задавался этим вопросом???? Спасибо .
Наконец то я нашел решение . В контроллере Handler дописал . И теперь меня перенаправляет на страницу входа не с кодом 403 , а redirect с кодом 302 .
public function render($request, Exception $exception)
{
if (!$exception instanceof AuthorizationException)
{
return redirect()->guest('login');
}
return parent::render($request, $exception);
}//End render
Выведет на одной странице 16 записей с id = 2 отсортированных по id(???)
А разве это кто то оспаривает?????
P.S И чувствую , что тут попахивает не реляционной базой данных.
Я уже намекал об этом ТС . И возможно записей будет не только 16 , а общее к-во может быть непредсказуемым , это известно только ТС.
для about страницы, т. к. id инфы которую мне нужно вытащить из БД = 2.
Я опять ничего не понял из Ваших сообщений , видимо плохой из меня телепат . Но если Ваша таблица в базе данных называется Dashboard и Вам нужно получить из нее строку где поле id равно 2 , то нужно сделать как то так .
public function about()
{
$dashboards=Dashboard::where('id',2)->
orderBy('id')->
paginate(16);
return view('upgr.static.about',['dashboards'=>$dashboards]);
}
При таком раскладе у меня на сайте само собой выводятся все данные из бд
Вы обьясните свою хотелку более подробно . При таком раскладе как у Вас , Вы выбираете полностью все поля и все строки из таблицы . Если Вам нужны не все данные , а какая то их чать, то сам шаблон и цикл здесь практичечески не при делах. Представьте себе ситуацию , что в таблице будет 1000 000 записей , Вы что ? всю таблицу будете тянуть на клиента ????
Вам нужно поставить условие Where в самом контроллере и уже тянуть на клиента ту часть данных которая Вам нужна .
Это если я правильно понял Вашу проблему .
Например так.\:
public function department_list($name,$id)
{
$product_list = Product::select('product.product_id','product.name','product.description',
'product.price','product.discounted_price','product.thumbnail')
->join('product_category','product.product_id','product_category.product_id')
->join('category','product_category.category_id','category.category_id')
->where('product.display',2)
->orWhere('product.display',3)
->Where('category.department_id',$id)
->orderBy('product.name')
->paginate(20);
return view('products.product_list',['product_list'=>$product_list]);
}
P.S И чувствую , что тут попахивает не реляционной базой данных.
Прочитав документацию на форуме :
"Свои страницы HTTP-ошибок
В Laravel можно легко возвращать свои собственные страницы для различных кодов HTTP-ошибок. Например, для выдачи собственной страницы для ошибки 404 создайте файл resources/views/errors/404.blade.php. Этот файл будет использован для всех ошибок 404, генерируемых вашим приложением. Представления в этой папке должны иметь имена, соответствующие кодам ошибок. Экземпляр HttpException, созданный функцией abort(), будет передан в представление как переменная $exception."
Сделал так . Все нормально работает. Теперь возник вопрос насколько это криво ?
Ну и вопрос остается открытым как мне контролировать программно. Так как этот способ мне не очень нравится потому что хотелось сделать перенаправление с кодом 301 например , а не то , что выдает браузер при F12 :
Failed to load resource: the server responded with a status of 403 (Forbidden)
Спасибо. Хорошего дня.
Добрый день господа. Я заранее извиняюсь , может мой вопрос кому то покажется странным мягко выражаясь. Но я только начал изучать Laravel , поэтому как и у многих новичков возникает много проблем и вопросов.
Используя composer я установил последнюю версию Laravel 5.7 . Работаю на локальном компьютере . В своем проэкте испоьзую Auth и Can:manipulate .С Auth вроде как вопросов не возникает , если пользователь не авторизован , то при попытке открыть какую нибудь страницу через get запрос веб браузера пользователь перенаправляется на страницу авторизации . Но вот если я использую в controller Can:manipulate . То при попытке открыть запрещенные страницы через get запрос веб браузера пользователь не перенаправляется на страницу авторизации , а браузер выдает ошибку 403 Вы не имеете прав доступа и имеется кнопка Go Home при нажатии на которую идет перенаправление на страницу
localhost/dashboard . А мне бы как то хотелось контролировать этот процесс и перенаправлять пользователя на какую нибудь из страниц своего сайта. Возможно ли это? И если да , то как??? Так как самостоятельные потуги пока ни к чему меня не привели. Заранее спасибо. Всем хорошего дня.