Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#51 Re: Laravel 5.x » Не запускается в браузерах homestead.app » 27.02.2018 15:16:13

sam

файл .ENV  редактировали?
типа APP_URL=http://test.app
и в браузере соотвественно http а не https

#52 Re: Laravel 5.x » Не работает вывод из бд » 24.01.2018 11:31:22

sam

не лишним будет https://laravel.ru/forum/viewtopic.php?id=2799 сотка уроков. от объяснений документации до практических примеров и созданий 2х проектов

#53 Re: Laravel 5.x » Вы подписаны на эту тему После запуска не появляется стандартная стр » 11.01.2018 19:10:51

sam

эм, ну в папке routes есть файл web.php в нем можно увидеть

Route::get('/welcome', function () {
    return view('welcome');
})->name('welcome');

типа таво. возвращается шаблон view('welcome'). (по адресу /welcome ) идем и смотрим в этот шаблон.
resources/views/welcome.blade.php
че хоть там у вас? скриншот можно?) (сгенерённую страницу)

#54 Re: Laravel 5.x » Отдать ссылку на картинку » 10.01.2018 17:38:22

sam

Как тогда по другому отдавать ссылку на картинку?

я тоже представить не могу

#55 Re: Laravel 5.x » ErrorException (E_ERROR) » 25.12.2017 11:59:04

sam

https://goo.gl/cgUSck сотка уроков.
а судя по ошибке, у тебя в БД нет пользователя либо еще по какойто причине (мб выборке) квери вдруг не квери..
правильно сказали, подробности давай

#58 Re: Laravel 5.x » Активный checkbox SleepingOwlAdmin » 20.12.2017 18:41:46

sam

если честно, то нифига не понял как работает чекбокс ларавеля..

короч прикрутил на саморезы :]
в методе контроллера добавляю новый параметр 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) (какой пользователь подписался на рассылку какого сообщения)

#61 Re: Laravel 5.x » Пагинация массива Ларавелем » 06.12.2017 17:06:42

sam

Короче сделал и работает. но есть вопрос к спецам..


исходно в

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", то дальше пагинатор работает как надо.

#62 Re: Laravel 5.x » Пагинация массива Ларавелем » 06.12.2017 15:18:17

sam

нет, по ссылке в комментариях стал делать, переопределил метод, url стал формироваться как надо, выборка данных тоже. но этот сам пагинатор к параметру, точнее к слову "page" в урле привязан. и если page=3 то он подсвечивает нажатой кнопку 3. если в урле изменить на pages или че хочешь, то все работает кроме отрисовки пагинатора.. и както не всегда даже корректно.. пока с этим разбираюсь
п.с. сперва на радостях переопределил этот

protected $pageName = 'page';

на ''. и ссылку получил что хотел, но отрисовка блин...

#63 Re: Laravel 5.x » Пагинация массива Ларавелем » 06.12.2017 12:01:26

sam

большое спасибо!

вот только хотел написать:
---
Нашел где косяк.

Ларкин пагинатор както сам смотрит УРЛУ и клеит к ней   "?page=2"   с номером нажатой кнопки.
а у меня он не видит урлы и клеит тоже "?page=2"
и получается я просто "page" заменил на "test1/test/2"  и получил вместо правильной урлы, свою не вычисленную урлу + приклейка в которой перелопачены спец символы..  сайт/"?test1/test/2=2"

как и справляется пока не ясно..
------

#64 Laravel 5.x » Пагинация массива Ларавелем » 05.12.2017 19:43:13

sam
Ответов: 5

собственно есть массив коллекций. забиваю 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#ручное
(неужели было сложно авторам добавить пару примеров... аж бомбит)

#65 Laravel 5.x » многократн. нажатие "Отправить" пишет в БД. кто как боролся? » 05.12.2017 16:08:44

sam
Ответов: 20

(лара 5.5)
Собственно 5 раз нажмем кнопку "Отправить" и 5 раз данные из формы летят в БД. редирект на эту же страницу даже не успевает отработать.
Кто как с этим боролся? (с аяксом все понятно..)

#66 Re: Laravel 5.x » Как лучше организовать структуру урлов в Laravel? » 04.12.2017 19:35:20

sam

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';
просто агонь.
а скриншот вашего добра узреть можно? просто для наглядности ситуёвины

#67 Re: Laravel 5.x » Формирование хорошего двухуровневого меню » 29.11.2017 16:13:33

sam

п.с. под 55м уроком всяко разное оставил, по проблемным местам. в том числе и по меню этому. если че не получится - пиши. поясню. сам уже сделал это меню под данным урокам. там можно выводить из БД, а можно статическое забить.

#69 Re: Laravel 5.x » Помогите разобраться с установкой Homestead » 27.11.2017 14:22:10

sam

на этой неделе планирую у себя дома поднять Homstead. да, там без танца с бубном тяжко.. хоть документацию пиши, чтоб спустя время, воспользоваться без бубна..
если че смогу - отпишусь.

#70 Re: Laravel 5.x » Как рулить полями (`updated_at`, `created_at`) ? » 23.11.2017 18:50:33

sam

AlexeyMezenin, кстати. у вас в подписях, в самом низу сайта, везде упоминается $this->user->create($request()->all());
а почему "$request()" содержит скобки?

#71 Re: Laravel 5.x » Как рулить полями (`updated_at`, `created_at`) ? » 23.11.2017 18:15:58

sam

а вот так жрет.. обновляется только 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) как исключить их из обработки? даже если их физически нет в таблице?

#72 Re: Laravel 5.x » Как рулить полями (`updated_at`, `created_at`) ? » 23.11.2017 18:11:00

sam

эм, dd($this->user);

User {#220 ▼
  #table: "users"
  #fillable: array:5 [▼
    0 => "name"
    1 => "family"
    2 => "phone"
    3 => "email"
    4 => "password"
  ]

как бы всё норм.

#73 Laravel 5.x » Как рулить полями (`updated_at`, `created_at`) ? » 23.11.2017 17:36:04

sam
Ответов: 6
            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) как исключить их из обработки? даже если их физически нет в таблице?

#74 Laravel 5.x » Механизм комментирования в Laravel ? или кто чем пользуется? » 23.11.2017 11:48:05

sam
Ответов: 1

Знатоки, подскажите, есть ли механизм комментирования для ларавеля или плагин там?
Ато начал сам делать https://yadi.sk/i/PgQzbdOI3Px698 да чувствую велосипед изобретаю.. все данные выводятся из БД правильно и сделать в один конец, думаю смогу, а вот дорабатывать потом будет не возможно, чувствую ))) сделать ту же пагинацию сообщений под данной статьей или поле для ответа выводить под последним комментарием-потомком, а не под каждым в цикле)..
п.с. как пища для размышлений, нашел пока вот такой ресурс http://www.php-s.ru/comments/ , там же и демо можно смотреть всех версий
или же http://www.webpress.uz/Alexandr/PHP/Vlo … haf6vmLSUk

#75 Re: Laravel 5.x » Хелпер asset » 21.11.2017 19:30:04

sam
<img src="{{ asset(env('THEME')) }}/images/articles/{{ $article->img->mini }}" alt="001" title="001"/>

в файле .env  допиши в конце:

THEME=pink

если я тебя правильно понял, то лично у меня ща на тестовом приложении, в папке public есть папка pink, в которой и находятся все images, css, js и т.д папки
а если нет, то сорян, конец раб дня сижу туплю уже)))

Подвал раздела