Laravel по-русски

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

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

#1 Laravel 5.x » Покритикуйте решение. Шаблоны договоров. » 06.08.2015 14:38:17

Gaint
Ответов: 2

Есть нужда реализовать механизм заполнения договоров на основе типового шаблона.

Я вижу это так.
В БД делаю таблицу Вид_Договоров. Каждый вид имеет шаблон с текстовым полем: наполнение и спец ключи для вставки параметров.
Например: Настоящий договор заключен между [Org name] далее Продавец и [Partner name] далее Покупатель. Сумма договора: [text_area 1]. Срок договора [combo_box 1]. Примечание [text_area 2]... и т.д.

При создании нового договора выбирается вид договора и читается из БД соответствующий шаблон. Шаблон парсится на текст и параметры. Текст отображается пользователю без возможности редактирования, параметры выбираются-заполняются пользователем. Дальше договор на печать и в БД.

Буду рад советам /критике /ссылкам на что-то похожее.

#2 Laravel 5.x » Вопрос по Laracast episode 22 Selecting Tags From the UI » 29.07.2015 22:45:04

Gaint
Ответов: 1

Не работает так как в уроке

https://laracasts.com/series/laravel-5- … pisodes/22 начиная с 10:30

Редактирует статью. Теги статьи которые были в статье, должны выделятся серым.

У меня в модели:
public function getTagListAttribute(){
        return $this->tags->lists('id');
    }

В шаблоне:
<div class="form-group">
    {!! Form::label('tag_list','Теги:') !!}
    {!! Form::select('tag_list[]',$tags, null, ['class' => 'form-control', 'multiple']) !!}
</div>

А вот так выделение работает:
{!! Form::select('tag_list[]',$tags, 1, ['class' => 'form-control', 'multiple']) !!}

#3 Laravel 5.x » Страничный вывод (pagination) и ограничение в запросе. » 05.07.2015 19:03:51

Gaint
Ответов: 1

Интересует pagination с точки зрения нагрузки на БД.
имеем конструкцию вида $users = DB::table('users')->paginate(15);

Обращение к БД будет сразу ко всем  $users? Или они будут подгружаться по переходу к новой странице?

При очень большом количестве   $users не приведет ли такая конструкция к высокой нагрузке на сервер. И если да, как правильно ограничить запрос например 100-ми записями из БД?

DB::table('users')->take(100)->paginate(15); - вроде как не сработало.

#4 Re: Laravel 5.x » Обнулить переменную по дате » 05.07.2015 18:51:10

имеем 2 условия которые должны выполняться одновременно (оператор AND) для начала нового отсчета:
- прошел год
- нового номера еще нет

Прошел ли год можно узнать по разнице между текущей датой и датой начала отсчета.
Нового номера еще нет по условию $number > 0;
После обнуления номера не забудьте обновить дату начала отсчета до 10.07.текущего года.

#5 Re: Laravel 5.x » Mysql to Laravel » 05.07.2015 17:52:00

Asva пишет:
kenan65 пишет:

интегрировать Mysql готовую базу данных в Laravel

очень интересно, что ты под этим понимаешь. Уточни.

Laravel не имеет своей БД. Он может работать с различными БД в том числе и MySQL. У Laravel есть удобный функционал, заменяющий SQL запросы, но это не значит что Вы не можете пользоваться  прямыми запросами.

#6 Re: Laravel 5.x » Простая авторизация Laravel 5.1.1 » 03.07.2015 10:20:05

Попробую прокомментировать Ваш код.

    public function postRegister(Request $request, MailQueue $mailer)
    {
        $validator = $this->registrar->validator($request->all());  //"registrar->" - для 5.1 это убрать

   // проверяем правильность введенных данных.
        if ($validator->fails()) {
            $this->throwValidationException($request, $validator);
        }

        /** @var User $user */
       
       //записываем в базу нового пользователя
       $user = $this->registrar->create($request->all()); //"registrar->" - для 5.1 это убрать
      //генерируем URL подтверждения 
      $url = action('Auth\AuthController@getConfirm', [ $user->confirmation_code ]); //я понимаю генерация кода происходит в функции create(). Очень хотелось бы увидеть код !!!
      //ставим письмо в очередь на отправку
        $mailer->queue('emails.confirm', compact('url', 'user'), function ($message) use ($user, $url)
        {
            $message->to($user->email)->subject('Подтверждение регистрации');
        });
    //возврат после регистрации придумайте сами   
        return ...;
    }

    /**
     * Подтверждение регистрации пользователем
     *
     * @param Request     $request
     * @param User        $user
     * @param string|null $token
     *
     * @return Response
     */
    public function getConfirm(Request $request, User $user, $token = null)
    { //эта проверка для меня не понятна, пробел знаний:
        if (is_null($token)) {
            throw new NotFoundHttpException;
        }

        /** @var User $user */
       //находим в БД пользователя
       $user = $user->whereConfirmationCode($token)->first();  //буду признателен за комментарий по поводу связи кода подтверждения и токена. Имею пробел знаний.
       //если не найден:
        if (!$user) {
            return view('auth.noconfirm')->withMessage('Пользователь с таким кодом подтверждения не найден. Если это ошибка, свяжитесь с нами.');
        }
       //если уже подтвержден
        if ($user->confirmed) {
            return view('auth.noconfirm')->withMessage('Ваш пользовательский аккаунт уже активирован. Нажмите "Войти" и введите свой логин и пароль, или воспользуйтесь восстановлением пароля.');
        }
        //поднимаем флаг пользователь подтвержден
        $user->confirmed = true;
       //записываем в БД
        $user->save();
      // тут пишем возврат на свой вкус
        return ...;
  //Ламерский вопрос. Почему не используется конструкция if - else? return обрывает выполнения кода?
    }

#7 Re: Laravel 5.x » FatalErrorException in IndexControl.php line 19: » 02.07.2015 15:57:58

$posts = Post::all();  - вот эта строчка у тебя зачем?

#9 Re: Laravel 5.x » Простая авторизация Laravel 5.1.1 » 01.07.2015 08:47:05

Хотелось бы немного изменить дефолтную регистрацию. В частности, нужно отсылать пользователю email с предложением подтвердить регистрацию, после подтверждения пользователь может входить. Стандартный механизм регистрации описан в трейте \project\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php
согласно логике, пользователь при отправке формы регистрации проходит валидацию контроллера \project\app\Http\Controllers\Auth\AuthController.php, и если все ок, система сразу его логинит.

Я могу переделать метод postRegister RegistersUsers.php - но меня смущает, что придется ковырять файл движка.
Или отказаться от стандартного механизма и написать свой с нуля используя Ручную аутентификацию и метод attempt? Как обычно принято делать в таких случаях?

#10 Re: Laravel 5.x » Простая авторизация Laravel 5.1.1 » 30.06.2015 23:05:11

Пришлось ковырять инглиш
Route::controller(['auth' => 'Auth\AuthController']); - это похоже в 5.1 не работает.

рекомендуют так:
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');

// Registration routes...
Route::get('auth/register', 'Auth\AuthController@getRegister');
Route::post('auth/register', 'Auth\AuthController@postRegister');

ну и дальше тоже есть отличия от 5.0.
http://laravel.com/docs/5.1/authentication

#11 Laravel 5.x » Простая авторизация Laravel 5.1.1 » 30.06.2015 08:27:14

Gaint
Ответов: 13

версия Laravel:
php artisan -V
Laravel Framework version 5.1.1 (LTS)

Читаю доки-уроки по аутентификации в 5-м и натыкаюсь на несоответствия.
Ввиду малого опыта, процесс обучения затягивается.

Итак. Создал миграцию с таблицей users:

public function up()
{
	Schema::create('users', function(Blueprint $table) {
            // ID пользователя
            $table->increments('id');
 
            // E-Mail (уникальный)
            $table->string('email')->unique();
 
            // Пароль. Для используемой в Laravel хэш-функции требуется не меньше 60 символов
            $table->string('password', 60);
 
            // Никнейм
            $table->string('username')->unique();
 
            // Админ?
            $table->boolean('isAdmin');
 
            // Активирован?
            $table->boolean('isActive')->index();
 
            // Код активации аккаунта
            $table->string('activationCode');
 
            // Токен для возможности запоминания пользователя
            $table->rememberToken(); // remember_token
 
            // created_at, updated_at
            $table->timestamps();
        });
}

В БД таблица появилась.
Дальше создаю по уроку:
https://laracasts.com/series/laravel-5- … pisodes/15 - создаю путь:
Route::controller(['auth' => 'Auth\AuthController']);

php artisan route:list - вываливает ошибку:
Missing argument 2 for Illuminate\Routing\Router::controller(), called in F
  :\OpenServer\domains\project\vendor\laravel\framework\src\Illuminate\Suppor
  t\Facades\Facade.php on line 210 and defined

Смотрю доки: упоминается шаблон resources/views/auth - у себя не нахожу каталог auth

Потом в уроке ссылаются на trait AuthenticatesAndRegistersUsers
у меня он не такой как в уроке:
namespace Illuminate\Foundation\Auth;

trait AuthenticatesAndRegistersUsers
{
    use AuthenticatesUsers, RegistersUsers {
        AuthenticatesUsers::redirectPath insteadof RegistersUsers;
    }
}

Собственно как создать простую авторизацию в 5.1.1?

#13 Re: Laravel 5.x » Не могу установить Laravel 5 в Windows 7 » 18.06.2015 15:08:01

Работай на здоровье. Я не возражаю. smile

Посмотри папку c:\openserver\domains - появился ли у тебя там твой проект, если не появился то посмотри где он появился, возможно перед запуском создания проекта надо было перейти "cd" в папку domains. Если проект не в domains, пересоздай его опять по новой в domains. Открывай браузер и вводи nazvanie_novogo_projecta/public. Если лень набирать каждый раз public лезь в настройки openservera и прописывай путь к корневой папке сайта.

#14 Re: Laravel 5.x » Не могу установить Laravel 5 в Windows 7 » 18.06.2015 12:24:46

composer create-project laravel/laravel nazvanie_novogo_projecta --prefer-dist   - так делали?

#15 Re: Laravel 5.x » Не могу установить Laravel 5 в Windows 7 » 18.06.2015 11:38:42

Написано же обнови composer. Читай внимательно. Перейди в папку php5.6 -  composer self-update

ну и проект я бы одним словом называл. laravel new_blog

#16 Re: Laravel 5.x » Не могу установить Laravel 5 в Windows 7 » 18.06.2015 10:37:33

karandashbest пишет:
Gaint пишет:

В Openserver есть своя командная строка. Ей и пользуйтесь.

а что за команда ?

Вы пользуетесь командной строкой системы cmd. А нужно пользоваться командной строкой openservera. В самом openserver-e - Дополнительно - командная строка.

https://laravel.ru/forum/viewtopic.php?id=996

wamp у меня на win8/64 не заработал полноценно, не открывает дочерние URL, работает только корень сайта.

#17 Re: Laravel 5.x » Не могу установить Laravel 5 в Windows 7 » 18.06.2015 08:46:24

В Openserver есть своя командная строка. Ей и пользуйтесь.

#18 Re: Общий раздел » Установка Laravel на OpenServer » 17.06.2015 14:32:52

Для обучения лучше на 5-й смотреть, а то потом опять переучиваться.

Openserver: - установка - настройки - выбираем Php и Apache последнии версии - дополнительно- командная строка - переходим cd в папку /PHP5.6 - вводим composer self-update - устанавливаем проект Laravel "composer create-project laravel/laravel проект --prefer-dist" - опять настройки - прописываем путь к папке /проект/public. Хосты пропишутся автоматом.

#19 Re: Laravel 5.x » Проверьте Модель » 17.06.2015 08:54:26

Я бы так попробовал:
вместо \Slug - в начале: use App\Models\Slug, потом обращаемся: = Slug::make

\App\Models\Region::create - заменить на self::create

По остальному не понятна структура БД.

#20 Re: Общий раздел » Новичок. Помогите стартануть. Вопрос по URL проекта. » 15.06.2015 08:59:11

И еще, Homestead запустился, войти vagrant ssh получилось. А вот доступа по дефолтному IP 192.168.10.10 нет. IP c локальной машины не пингуется. Фаейрвол выключен. Если войти по vagrant ssh,  на сервере каталог vagrant пустой, хотя согласно настройке в файле Homestead.yaml вроде как должен подхватывать мои локальные папки и файлы и помещать их в ~/home/vagrant/.

Еще работу с Homestead останавливает любовь vagranta к диску С (с:\users\user_name\). Туда закачивается образ homestead ~1GB и там хранятся проекты. Обладатели SSD небольшого объема меня поймут.

#21 Re: Общий раздел » Новичок. Помогите стартануть. Вопрос по URL проекта. » 15.06.2015 08:24:33

На openserver пошло. Только нужно в настройках выбирать последнюю версию Apache и PHP, а потом обновить composer из командной строки OpenSERVER-а. Домэйны с путями public прописываются в настройках OpenSERVER-а. И да. Спасибо предыдущему оратору.

#22 Re: Общий раздел » Новичок. Помогите стартануть. Вопрос по URL проекта. » 12.06.2015 22:45:10

поковырял wampserver как тут:
http://your3w.ru/nastroyka-lokalnogo-se … ampserver/

http://newproect - заработал,
а вот http://newproect/newpage - не хочет.

Route::any('newpage', function () {
    return 'Hello Newpage';
});

Not Found
The requested URL /newpage was not found on this server.
Apache/2.4.9 (Win32) PHP/5.5.12 Server at newproect Port 80

Прям и продолжать такими черепашьими темпами желание осваивать пропадает.

Пробовал homestead - ошибка распаковки файла. Я так понимаю оно качается на С:\, сколько ему места надо? Или может можно поменять пути для образов git-bash-м на другой диск.

#23 Re: Общий раздел » Новичок. Помогите стартануть. Вопрос по URL проекта. » 12.06.2015 09:53:46

Route::get('newpage', function () {
    return 'Hello Newpage';
});

http://localhost/newproect/public/newpage
так тоже не открывает, страница не найдена

Из английского хелпера:
Or, you may even register a route that responds to all HTTP verbs using the any method:

Route::any('foo', function () {
    return 'Hello World';
});

Generating URLs To Routes

You may generate URLs to your application's routes using the url helper:
$url = url('foo');   -  это куда надо вставить?

#24 Общий раздел » Новичок. Помогите стартануть. Вопрос по URL проекта. » 11.06.2015 22:55:48

Gaint
Ответов: 6

Доброго времени.
С php  в общем то знаком, надо переходить на следующий уровень. Решил начать изучение фреймворков с laravel-а.

Установил на win 8.1/64 wampserver, запустил laravel 5, работает. НО...
Вот так работает: http://localhost/newproect/public/
Вот так http://localhost/newproect - открывает каталог с файлами и папками проекта
Вот так http://newproect.localhost открывает так же как и localhost страницу wampservera
Вот так http://newproect - страница не доступна

Это нормально? так и должно работать?

Дальше мне нужно вывести
http://localhost/newproect/public/newpage  - получаю страница не доступна
(в роуте прописываю контроллер, в контроллере добавляю функцию newpage)

Route::get('/', array(
    'as' => 'home',
    'uses' => 'IndexController@getIndex'
));   

Route::get('newpage', 'IndexController@newpage');   

Контроллер:
<?php
namespace App\Http\Controllers;
use Illuminate\Routing\Controller;
class IndexController extends Controller {
     public function getIndex() {
        return view('index');
        }
     public function newpage() {
    return 'Hello newpage';
    }
}

Куда смотреть? В сторону warmservera или настройки laravela?

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