Laravel по-русски
Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Здравствуйте. Можно ли каким-нибудь способом вернуть ошибку в шаблон не из контроллера, а из пользовательского класса? Что-нибудь похожее на это:
class IndexController {
$class = new Class();
$class->method();
}class Class{
public function method(){
return back()->withErrors(['Ошибка']);
}
}Методом проб и ошибок выяснил что почта не отправляется только если указан адрес отправителя mail.ru, list.ru и т.д. С gmail.com все уходит отлично. Тоже самое и со стандартной функцией php mail(). В чем может быть проблема?
Раньше да, только тогда все настройки были другие.
Сменил драйвер - Connection could not be established with host smtp.mail.ru [Connection timed out #110]
При старом драйвере возвращался 0.
Здравствуйте. Столкнулся с проблемой. Перестала отправляться почта с Mail.ru
MAIL_DRIVER=mail
MAIL_HOST=smtp.mail.ru
MAIL_PORT=465
MAIL_USERNAME=email@list.ru
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls
$mail = Mail::queue('emails.template', [], function ($message) {
$message->to('recieveremail@mail.ru')->from('email@list.ru')->subject('Письмо');
});
dd($mail);
В чем может быть проблема?
Попробовал дописать public. Не помогло. Ввожу в адресной строке айпишник сервера -> открывается index.php -> вызывается нужный роут, но шаблон не подключается, остается просто пустая страница. Сейчас конфиги выглядят так:
apache2.conf:
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
Options FollowSymLinks
AllowOverride All
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/html/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
AccessFileName .htaccess
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
000-default.conf:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/public
<Directory "/var/www/html/public">
AllowOverride All
</Directory>
Alias /phpmyadmin "/usr/share/phpmyadmin/"
<Directory "/usr/share/phpmyadmin/">
Order allow,deny
Allow from all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Здравствуйте. Недавно купил дешевый vps для тестов. Операционка ubuntu 14. Установил PHP 7, apache2, mysql5.6. Залил Laravel через composer. Но не работают роуты.
Сайт лежит в /var/www/html/
apache2.conf:
<Directory />
Options FollowSymLinks
AllowOverride All
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
000-default.conf:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory "/var/www/html">
AllowOverride All
</Directory>
Alias /phpmyadmin "/usr/share/phpmyadmin/"
<Directory "/usr/share/phpmyadmin/">
Order allow,deny
Allow from all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
# sudo a2enmod rewrite
Module rewrite already enabled
В чем может быть проблема?
Сложный вопрос. А где это можно посмотреть?
Но Duzun ведь как то смог получить ответ.
Здравствуйте пытаюсь пропарсить страницу сайта sima-land.ru с помощью hQuery.
use hQuery;
$doc = hQuery::fromURL('sima-land()ru/');
получаю ошибку: unable to create socket "tls://www.sima-land()ru:443"
С других сайтов данные приходят. На сайте разработчика https://duzun.me/playground/hquery#sel= … land.ru%2F данные с данного сайта тоже приходят. В чем может быть проблема?
Разобрался с проблемой. Если кому интересно, то - у меня версия Laravel 5.2.27. Необходимо переместить строку \Illuminate\Session\Middleware\StartSession::class, из группы web в группу middleware в файле Kernel.
Здравствуйте. Недавно установил чистый Laravel 5.2. Закинул туда свои файлы. И перестали работать все ошибки. И те которые возвращаю через return back()->with(), и те которые возвращает Request:
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class OrderForm extends Request
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'name' => 'required|name|between:10,150',
'phone' => 'required|phone|between:5,50',
'adress' => 'required|adress|between:10,150',
];
}
}
Работаю на хостинге с PHP 7. В чем может быть проблема?
Здравствуйте. Пытаюсь обновить куку таким способом:
$cookieJar->queue($cookieJar->forever(MainData::getBasketName(), $basket));
return back();
Первый раз она устанавливается, но при добавлении она не обновляется. Пробовал сначала удалить, а потом установить - результат такой же. Хотя массив $basket приходит нужный. В чем может быть проблема?
Решил проблему. Она оказалась в том, что таблицы были в MyIsam. Поставил в InnoDB и все стало работать.
DB::beginTransaction();
try{
$order = DB::table('orders')->insertGetId([
'name' => $data['name'],
'phone' => $data['phone'],
'adress' => $data['adress'],
]);
DB::table('goods')->insert([
'order' => $order,
'good' => $data['phone'],
'quantity' => $data['phone'],
]);
}
catch(QueryException $e){
DB::rollBack();
}
DB::commit();
Никакого эффекта.
Я бычно пользуюсь таким способом: /^[а-яА-ЯA-Za-z0-9\- ,]+$/u
DB::commit() пока нету, потому что я хочу для начала отменить транзакцию.
Если верить документации, то при использовании синтаксиса DB::transaction(function() {...}); вообще не нужно ни rollback, ни commit. Но ни так ни так не добился должного результата.
Пробовал и в камэлКэйсе и так, но результат один и тот же. И не появляется ошибка что метьод не найден.
Здравствуйте. Использую Laravel 5.2. Возникла проблема с транзакцией
protected function create(array $data, $basket){
DB::transaction(function() use ($data, $basket){
try{
$order = Orders::create([
'name' => $data['name'],
'phone' => $data['phone'],
'adress' => $data['adress'],
]);
$basket->each(function($item, $key) use ($order){
Goods::create([
'order' => $order->id,
'good' => $item->get('id'),
'quantity' => $item->get('quantity'),
]);
});
}
catch(Exception $e){
DB::rollback();
}
});
}
При добавлении в таблицу Goods я делаю ошибку и получаю QueryException. Но в таблицу Orders данные все равно добавляются. Что я делаю не так?
Ясно, спасибо больое, вы мне очень помогли)
'required' - бессмысленно проверять, раз юзер сюда попал по маршруту - значит ID указан. Иначе бы не сработал маршрут
Точно) И на numeric тоже, ведь в роуте прописан where)
А каким образом в методе Authorize мне получить данную переменную, чтобы проверить на is_int()?
duster, сделал как вы говорили, с помощью make:request но передача методом гет все равно не работает.
public function rules()
{
return [
'id' => 'required|numeric',
];
}
отправляю так
<a href="{{ url('/admin/toBasket/'.$order['id']) }}">В корзину</a>
Возвращается ошибка что поле id обязательно для заполнения. Я так понимаю что это связано с тем, что для получаемой переменной не задан ключ id. Каким образом вообще валидироавать переменные полученные методом гет?
Route::get('/admin/toBasket/{id}', 'AdminController@toBasket')->where('id', '[0-9]+');
Да, передается как часть урла.
Здравствуйте. Нуждаюсь в небольшом ликбезе. Пытаюсь методом GET передать в контроллер параметр, например id. В контроллере принимаю таким образом:
public function getId(Request $request){
dd($request->id);//Выводится нужный id
dd($request->all());//Выводится массив, но в нем нет id
}
Далее мне нужно передать $request в Validator. Почему метод all() не возвращает id? И как мне его отправить в Validator?
Спасибо большое. Все так и есть.
Здравствуйте. У меня такой вопрос. Я по API получаю различные кактегории товаров и какая будет вложенность заранее не известно. То есть маршрут может быть примерно таким /category/subCategory1/subCategory2/subCategory3... И сколь будет подкатегорий неизвестно. Пытался создать такой роут -
Route::get('/{category}/{subCategory}/', 'SubCategoryController@index')->where('category', '[0-9a-z_-]+')->where('subCategory', '[0-9a-z_-/]+');
Но появляется ошибка -
ErrorException in UriValidator.php line 21: preg_match(): Compilation failed: range out of order in character class at offset 53
Как нужно правильно реализовать роут?
Понятно. Спасибо.