Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Кстати, а ты куки свои смотришь или чужие?
Просто я как то раз затупил. Создавал куки для авторизованных пользователей, то есть для каждого свои и проверял есть ли такие, находясь в своей учётке. Естественно, в моём браузере небыло кук созданных для других пользователей.
Ну и ещё такой момент - когда куки отправил, то сперва должна загрузиться страница, а уже после, при повторной загрузке страницы они должны попадать в мидлвер.
Если у тебя стандартные функции пхп не работают, то по идее не должны и ларавельские работать. Я мельком глядел, вроде ларавельские на них основаны. Хотя не уверен.
Мне не понравилось работать с куками. И в итоге я на кэш перешёл.
А вообще вот это помогло по моему.
https://stackoverflow.com/questions/452 … r-45208138
Если нет, то стандартные функции от пхп по работе с куками однозначно должны работать.
Вообще возможно же всё, было бы время.
Но я не понял проблемы. Список шаблон это же название файла шаблона, которые лежат в статичном месте. Если названия в БД хранятся , то берёшь из БД, или же ищешь папку с шаблонами, получаешь названия.
Аватар шаблона. . . ну картинки то точно в БД? Аналогично.
Файл шаблона. Ну, как я понимаю, есть имя, есть путь до файла -> есть шаблон?
Искал долго, нашёл случайно.
Оставлю это тут на будущее.
Задача - вывести форму в блок (например добавления коммента, по типу вконтактика). Форма - Kris\LaravelFormBuilder
Создаём файл шаблона для вывода формы -
{!! form_start($form) !!}
{!! form_row($form->image) !!}
{!! form_row($form->text) !!}
{!! form_row($form->submit) !!}
{!! form_end($form) !!}
В контроллере прописываем что нужно и в окончании выкидываем джисон массив, в который запихали отрендериную вьюшку шаблона, что выше прописали.
// ->render() обязателен.
$html = view('view.blockForm', compact('form'))->render();
return \Response::json(['html' => $html]);
В jquery просто выводим данную переменную.
$.ajax({
// params
}).done(function( data ) {
blockThis.append(data['html']);
});
Здравствуйте.
Подскажите как обратиться к свойствам модели, если название модели содержится в переменной?
Есть что-то типа -
$item=Product::with('image','like','comment.image','feedback.image')->find($id);
foreach ($item->getRelations() as $model => $value) {
//должно быть
// $item->image()->delete();
// $item->comment->image()->delete(); и т.д.
// Так не работает - undefined delete()
$item->$model->delete();
// Так тем более :D:D:D $item->$model()->delete()
}
Я не уверен, но ->find() ищет по строчке, а не по массиву. Строчкой выше -get() вы получаете не строчку, а массив/объект/коллекцию(у меня сложно с наименованиями).
То есть типа такого
->hasMany('App\Models\JackpotBets', 'game_id')->where('JackpotBets.room','Jackpot.room');
тоже не работает?
(не проверял, просто предположил)
Как я понимаю, эти две модели у вас связаны. Скорее всего даже отношением один ко многим. Почитайте документацию по поводу функций - model::with(), model::has(), model::whereHas()
То есть если у тебя в моделе Jackpot прописано отношение типа
public function названиеОтношения() {
return $this->hasMany('App\Models\JackpotBets', 'game_id');
}
Тогда ты сможешь прописывать конструкции, о которых написал выше.
Спасибо, но вчера сделал немного по другому. В принципе как хотел, что б работали глобалки. То есть написал подобное -
$query = Model::when(count($param),function($q) use($param){
return Search::scopeParams($q,$param);
});
Правда осталась проблема, если во входящих условиях нет нужных данных, ответ приходит пустая строка, а не часть для запроса. То есть -
public static function scopeParams($query, $params) {
if('условие')
return $query->where('условие');
}elseif('нет удовлетворяющих параметров')
return '';
}
Ниже идёт копирование запроса - $var = clone $query; И тут происходят ошибки.
Здравствуйте.
Я не догоняю что и как нужно для глобального scope из документации. С локальной всё просто - в моделе, которую используем , должна быть функция с префиксом "scope" и эта функция просто пишется в условии при выборке без префикса scope.
Но как быть с глобальной, если у меня есть, например модели product и order. А scope выполняет одно и то же действие в обеих моделях, сортирует по дате создания например. Что бы не писать функцию scope дважды в двух моделях, хотелось бы её единожды в каком то левом классе написать и использовать в нужный момент.
Насколько я понимаю, у тебя не отправляются данные с ошибкой в твой шаблон. То есть логика проста - если ошибка, то прерываем выполнение и идём показывать ошибку. Иначе выполняем код дальше.
Пример мой -
Контроллер.
if( $timeFrom > $timeTo ){
// Правило изменил, так как не соответствие полей на форме, но требуется что б ошибочные поля подсвечивались, и было понятное сообщение
$rule = ['period_from'=>' ','period_to'=>' ','message'=>'Дата в поле "период от" должна быть меньше даты "до"'];
return \Redirect::back()->withInput()->withErrors($rule);
}
Шаблон.
@if ($errors->all())
<div class="alert alert-danger">
@foreach($errors->all() as $error)
<p>{{ $error }}</p>
@endforeach
</div>
@endif
Я так понимаю, что это и с чем это едят не найдено?
У меня после этой ошибки "сертификат слетел". На самом деле он стоит, но запросы стали по умолчанию ходить не через https, a через http. Смена сертификата ничего не дала. Все ссылки на сайте относительные, а те что абсолютные через https.
Я в недоумении что могло поломаться и как это исправить.
Здравствуйте.
Делаю загрузку файлов на laravel"e. По стандарту - файл прикрепляется, форма заполняется и отправляется на сервер и прочее и прочее.
Если взять в пример drupal (больше ни на чём пока не работал), то там выбираешь картинку, она тут же загружается и выводится и можно продолжить заполнение формы и только потом послать форму на обработку и сохранение данных.
В консоле, во вкладке network я не вижу что бы происходили какие то манипуляции и отправка во время загрузки файла.
Я сам могу через ajax обрабатывать файл и выводить его до отправки формы. Но мне интересно как происходит это в цмсках и в чём отличие.
Оказалось немного проще,чем представлял.
Сделал второй столбец в таблице планировщика с временем сервера и по нему определяю когда нужно отсылать уведомления.
То есть - время уведомления ( тайм зона сервера ((+/-)таймзона пользователя) )
Здравствуйте.
Подскажите идею или натолкните на мысль как вообще можно реализовать требуемое.
Есть планировщик задач. Как только приходит время для поставленной задачи, сотруднику приходит уведомление о данной задаче.
То есть функция запускается каждые полчаса и смотрит таблицу с запланированными задачами.Если есть что то, то создаются уведомления и посылаются каждому пользователю своё. Так же имею у каждого пользователя его часовой пояс, так как сотрудники не в одном городе, а по всей России.
Итог - я не могу создать для каждого пользователя свой запрос для выборки его запланированных задач с учётом его часового пояса. (могу конечно, но это жирно).
В общем проблема, что бы отправлять пользователям уведомления согласно их часовому поясу.
Здравствуйте. Помогите изменить запрос, так как он что то слишком тяжело работает, а я только начинаю разбираться в оптимизации.
Смысл - есть таблица компаний(1 таблица), у каждой компании могут быть проекты двух видов( то есть 2 таблицы. ) . У каждого проекта есть файлы. (уже четвёртая таблица). Проблема в том, что связь компании и файлов идёт через таблицы проектов.
SELECT f.fid,f.uid,f.filename,f.filepath,f.filemime,f.entity_type,f.entity_id,f.hidden_files,
(CASE WHEN f.entity_id=p.id THEN p.id ELSE pt.id END) as project_id,
(CASE WHEN f.entity_id=p.id THEN p.vacancy ELSE pt.task END) as project_vakancy,
(CASE WHEN f.entity_id=p.id THEN p.company_id ELSE pt.company_id END) as company_id
FROM files as f, projects as p, projects_talking as pt
WHERE (f.entity_id = pt.id AND f.entity_type = "project_talking" AND pt.company_id = ? )
OR ( p.company_id = ? AND f.entity_id = p.id AND f.entity_type = "project" ) GROUP BY f.fid
Итог запроса - С помощью кейса получаю таблицу, где в одно поле вставляю нужное значение и получается и получается такая удобная маленькая таблица из четырёх таблиц.
Вопрос решён с помощью скрытых инпутов. Но мне этот подход не нравится.
Здравствуйте. Задача - получить значения атрибутов с формы ввода, для выборки дальнейшего действия (например либо сохранить запись как новую, либо отредактировать и сохранить).
//создание формы
$form = $formBuilder->create('App\Forms\MailTemplateForm', [
'method' => 'POST',
'action' => array('mailTemplateController@store'),
'class' => 'clearfix ',
]);
//Сама форма
$this->add('themetext', 'textarea', [
'label' =>'Тема письма',
'label_attr' => ['class' => 'control-label col-md-2', 'for' => $this->name],
'default_value' => $theme,
'attr' =>['rows' => '0'],
])
->add('bodytext', 'textarea', [
'label' => 'Текст письма',
'label_attr' => ['class' => 'control-label col-md-2', 'for' => $this->name],
'default_value' => $body,
]);
->add('submit', 'submit', [
'attr' => ['class' => 'btn btn-primary right', 'data-type'=>'create' ],
'label' => $buttText
]);
И фишка в том, что мне нужно с кнопки "submit" получить значение "data-type", что бы по нему написать обработчик.
public function store(){}
Если обычным POST или GET я могу получить введённые данные, то это всё. Ничего больше. Форма без ajax, поэтому после всех манипуляций идёт redirect на главную страницу со всем списком новых или изменённых строчек.
путь через Route::resource();