Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
файл .ENV редактировали?
типа APP_URL=http://test.app
и в браузере соотвественно http а не https
не лишним будет https://laravel.ru/forum/viewtopic.php?id=2799 сотка уроков. от объяснений документации до практических примеров и созданий 2х проектов
эм, ну в папке routes есть файл web.php в нем можно увидеть
Route::get('/welcome', function () {
return view('welcome');
})->name('welcome');
типа таво. возвращается шаблон view('welcome'). (по адресу /welcome ) идем и смотрим в этот шаблон.
resources/views/welcome.blade.php
че хоть там у вас? скриншот можно?) (сгенерённую страницу)
Как тогда по другому отдавать ссылку на картинку?
я тоже представить не могу
https://goo.gl/cgUSck сотка уроков.
а судя по ошибке, у тебя в БД нет пользователя либо еще по какойто причине (мб выборке) квери вдруг не квери..
правильно сказали, подробности давай
да что уж там, тогда и мой пакет
https://laravel.ru/forum/viewtopic.php?pid=14965#p14965
в ларке
use Illuminate\Support\Str;
$name = Str::slug($articles->text);
))
если честно, то нифига не понял как работает чекбокс ларавеля..
короч прикрутил на саморезы :]
в методе контроллера добавляю новый параметр is_checked к комментарию. и в шаблоне он либо чекед либо не чекед
if ($comment->check()->where('user_id', Auth::user()->id)->first()){
$comment->is_checked = true;
}
в моделе
public function check(){
return $this->hasOne('App\CommSendEmails', 'comm_id', 'id');
}
и сама таблица comm_send_emails с полями (id,comm_id,user_id) (какой пользователь подписался на рассылку какого сообщения)
https://laravel.ru/forum/viewtopic.php?id=3115 для вдохновения:)
эм, а дебажинг включен?) в .env APP_DEBUG=true
Короче сделал и работает. но есть вопрос к спецам..
исходно в
abstract class AbstractPaginator implements Htmlable
...
protected $pageName = 'page';
если оставить как есть, то в урл попадает /page2 и не работает.
если прям там же беру и стираю
protected $pageName = '';
в урл попадает /2 и все работает. и выборка и скролинги и выбрана кнопка!...
если в своем созданном для переопределения классе Paginator
добавляю переопределение переменной
class Paginator extends \Illuminate\Pagination\LengthAwarePaginator
{
public function url($page)
{
protected $pageName = '';
if ($page < 0) {
$page = 0;
}
return
$this->pageName
.$page
.$this->buildFragment();
}
}
то пагинация начинает валиться с ошибками. то не скролится то еще че, т.к. ключ 'page' отсутствует, я так понял... а в урле он как строка. в общем не корректное поведение какое-то.
и как тут грамотно поступить я не знаю. это по идее, после обновления ларавеля, снова надо будет стирать значение в переменной?
------------------------
Код следующий:
в руте гета добавляем /{page?}
public function test (.... , $page = 0) {
// $comm - массив коллекций
$paginate = 10; // выводим по 10 записей
$offset = ($page * $paginate) - $paginate;
$itemsForCurrentPage = array_slice($comm, $offset, $paginate, true); // выборка 10 записей в зависимости от нажатой кнопки.
$paginate = new Paginator($itemsForCurrentPage, count($comm), $paginate, $page);
return в шаблон $paginate
}
в шаблоне
<div align="right"> {{--Пагинация--}}
{{ "Всего записей: " . $paginate->total() }}
{{ "Количество строк в таблице на странице: " . $paginate->count() }}<br/>
{{ "Номер текущей страницы: " . $paginate->currentPage() }}<br/>
{{ "номер последнего элемента: " . $paginate->lastItem() }}<br/>
{{ "номер последней страницы в пейджинге: " . $paginate->lastPage() }}<br/>
{{ "Номер следующей страницы за текущей: " . $paginate->nextPageUrl() }}<br/>
{{ "Шаг, видимо: " . $paginate->perPage() }}<br/>
{{ "Ссылка на предыдущую страницу: " . $paginate->previousPageUrl() }}<br/>
</div>
<div align="right">{{ $paginate->links() }}</div>
<br>
@foreach($paginate as $t)
{{ $t->name }}<br>
@endforeach
<br>
П.С.
получается этот
protected $pageName = 'page';
везде участвует, но когда доходит дело конца отработки кода, мне нужно этот page удалить из выхлопа результата. чтоб далее мой код корректно отработал. как такое делается?
__
всеравно както странно себя ведет пагинатор. походу его весь переписывать под себя надо..
например перейдя по линку, в котором прописано имя рута, рут открывается. наприимер:
"test/statya-1/open_read"
жму листание комментов под статьей, параметр передается не к "test/statya-1/open_read/2", а "test/statya-1/2".
если руками вобью и обновлю "test/statya-1/open_read/2", то дальше пагинатор работает как надо.
нет, по ссылке в комментариях стал делать, переопределил метод, url стал формироваться как надо, выборка данных тоже. но этот сам пагинатор к параметру, точнее к слову "page" в урле привязан. и если page=3 то он подсвечивает нажатой кнопку 3. если в урле изменить на pages или че хочешь, то все работает кроме отрисовки пагинатора.. и както не всегда даже корректно.. пока с этим разбираюсь
п.с. сперва на радостях переопределил этот
protected $pageName = 'page';
на ''. и ссылку получил что хотел, но отрисовка блин...
большое спасибо!
вот только хотел написать:
---
Нашел где косяк.
Ларкин пагинатор както сам смотрит УРЛУ и клеит к ней "?page=2" с номером нажатой кнопки.
а у меня он не видит урлы и клеит тоже "?page=2"
и получается я просто "page" заменил на "test1/test/2" и получил вместо правильной урлы, свою не вычисленную урлу + приклейка в которой перелопачены спец символы.. сайт/"?test1/test/2=2"
как и справляется пока не ясно..
------
собственно есть массив коллекций. забиваю URL руками - все выводится как надо., НО как только жмякаю ларавелевскую кнопку пагинатора "2", например "показать результат следующей выборки"
то URL превращается в какуюто херню.. и как с этим бороться - не знаю.
или я где че попутал и не в ту степь пошел.. в общем:
сперва делаю следующее:
в рут добавляю свой параметр и передаю его ($page_id) в код ниже:
$comm -- коллекция массивов.
$paginate = 10;
$offset = ($page_id * $paginate) - $paginate;
$itemsForCurrentPage = array_slice($comm, $offset, $paginate, true);
$test = new\Illuminate\Pagination\LengthAwarePaginator($itemsForCurrentPage, count($comm), $paginate, $page_id);
сделал, как написано тут http://itsolutionstuff.com/post/laravel … ample.html
дефолтом пагинатор лары делает к урле, грубо говоря,
http://test.loc/&page=2
тогда как мне надо сайт/параметр/параметр/параметр/2
ок. меняю ларкин пейдж на свой
$test->setPageName($_SERVER['REQUEST_URI']);
тут же смотрю результат с 0
(сайт/параметр/параметр/параметр/0)
LengthAwarePaginator {#4263 ▼
#total: 38
#lastPage: 4
#items: Collection {#4228 ▼
#items: array:10 [▼
28 => test {#742 ▶}
29 => test {#2341 ▶}
30 => test {#2342 ▶}
31 => test {#2343 ▶}
32 => test {#2344 ▶}
33 => test {#2345 ▶}
34 => test {#2346 ▶}
35 => test {#2347 ▶}
36 => test {#2348 ▶}
37 => test {#2349 ▶}
]
}
#perPage: 10
#currentPage: 1
#path: "/"
#query: []
#fragment: null
#pageName: "/admin/param1/param2/param3/0"
}
выборка есть, "pageName" тоже то, что надо.
жмякаю ларавелевскую кнопку пагинатора "2" << 0 1 "2" 3 >>
и получаю:
http://test.loc/?%2Fadmin%2Fparam1%2Fparam2%2Fparam3%2F=2
откуда взялся "?" не понятно. "/" заменился на "3%2F"
и этож происходит после сабмита. и как такое обработать? я догадываюсь, что нужно сделать декодирование.. но как..
или, там, мож мидлварь както приляпать, что после дейсвтия чето проделать.. не знаю.
вот что говорит документация по ларке (пагинация по массиву)
https://laravel.ru/docs/v5/pagination#ручное
(неужели было сложно авторам добавить пару примеров... аж бомбит)
(лара 5.5)
Собственно 5 раз нажмем кнопку "Отправить" и 5 раз данные из формы летят в БД. редирект на эту же страницу даже не успевает отработать.
Кто как с этим боролся? (с аяксом все понятно..)
https://goo.gl/cgUSck сотня уроков + создание 2х проектов. возможно вам будет полезно
п.с. все таки не могу удержаться и не спросить. а вы в курсе, что можно параметры передавать вот так:
Route::post('article_add_comm/{id}/parent_id/{parent_id?}/to_comm_id/{otvet_na_comm_id?}', 'CommentController@article_add_comm')->name('article_add_comm');
$view = 'page';
и
$view = 'post';
просто агонь.
а скриншот вашего добра узреть можно? просто для наглядности ситуёвины
п.с. под 55м уроком всяко разное оставил, по проблемным местам. в том числе и по меню этому. если че не получится - пиши. поясню. сам уже сделал это меню под данным урокам. там можно выводить из БД, а можно статическое забить.
на этой неделе планирую у себя дома поднять Homstead. да, там без танца с бубном тяжко.. хоть документацию пиши, чтоб спустя время, воспользоваться без бубна..
если че смогу - отпишусь.
AlexeyMezenin, кстати. у вас в подписях, в самом низу сайта, везде упоминается $this->user->create($request()->all());
а почему "$request()" содержит скобки?
а вот так жрет.. обновляется только update_at
"ок".
$set_user = User::find($id);
if (isset($set_user)) {
if ($request->isMethod('POST')) {
if ($this->validate($request, User::rules())){
$set_user->name = $request->name;
$set_user->family = $request->family;
$set_user->phone = $request->phone;
$set_user->email = $request->email;
if ($set_user->save()){
dd('ок');
}else{
dd('не ок');
}
} else {
dd('Валидация не пройдена');
}
и тогда первый вопрос отпадает. остается только
2) как исключить их из обработки? даже если их физически нет в таблице?
эм, dd($this->user);
User {#220 ▼
#table: "users"
#fillable: array:5 [▼
0 => "name"
1 => "family"
2 => "phone"
3 => "email"
4 => "password"
]
как бы всё норм.
if ($request->isMethod('POST')) {
$input = $request->except('_token');
$validator = Validator::make($input,[
'name' => 'bail|required|max:100|min:2',
'family' => 'bail|max:100|min:2',
'phone' => 'bail|max:25|min:5',
'email' => 'bail|required|max:50|min:7|email',
]);
if($validator->fails()){
redirect()->route('pageAdd')->withErrors($validator)->withInput();
}
$this->user->save($input);
и при методе save()
General error: 1364 Field 'name' doesn't have a default value (SQL: insert into `users` (`updated_at`, `created_at`) values (2017-11-23 17:13:48, 2017-11-23 17:13:48))
содержимое $input
array:5 [▼
"id" => "2"
"name" => "den"
"family" => "TEN"
"phone" => "345345345"
"email" => "test@yandex.ru"
]
1) Можно ли както в конфигах указать, что "created_at" заполнять только при создании записи (или при пустом значении) а "updated_at" обновлять при каждом пуке ?
2) как исключить их из обработки? даже если их физически нет в таблице?
Знатоки, подскажите, есть ли механизм комментирования для ларавеля или плагин там?
Ато начал сам делать https://yadi.sk/i/PgQzbdOI3Px698 да чувствую велосипед изобретаю.. все данные выводятся из БД правильно и сделать в один конец, думаю смогу, а вот дорабатывать потом будет не возможно, чувствую ))) сделать ту же пагинацию сообщений под данной статьей или поле для ответа выводить под последним комментарием-потомком, а не под каждым в цикле)..
п.с. как пища для размышлений, нашел пока вот такой ресурс http://www.php-s.ru/comments/ , там же и демо можно смотреть всех версий
или же http://www.webpress.uz/Alexandr/PHP/Vlo … haf6vmLSUk
<img src="{{ asset(env('THEME')) }}/images/articles/{{ $article->img->mini }}" alt="001" title="001"/>
в файле .env допиши в конце:
THEME=pink
если я тебя правильно понял, то лично у меня ща на тестовом приложении, в папке public есть папка pink, в которой и находятся все images, css, js и т.д папки
а если нет, то сорян, конец раб дня сижу туплю уже)))