Laravel по-русски

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

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

#1 Re: Laravel » telegram bot laravel 5.3 » 04.11.2016 19:37:35

Есть пакет
Здесь туториал Посмотрите что и как, думаю и с малым опытом разберетесь а лучше всего тщательно изучить документацию laravel и удостоверится что вы понимаете как работает фреймворк. Удачи!

#2 Re: Laravel 5.x » Помогите с аутентификацией » 04.06.2016 14:51:37

laravelNewbie пишет:
    | If you have multiple user tables or models you may configure multiple
    | sources which represent each model / table. These sources may then
    | be assigned to any extra authentication guards you have defined.

Возможно вам стоит сделать так
в auth.php где guards

'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        'some_guard' => [
            'driver' => 'session',
            'provider' => 'some_provider',
        ],
        
    ],

providers ->

'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
        'some_provider' => [
            'driver' => 'eloquent',
            'model' => App\SomeModel::class,
        ],
]

ну и перед тем как проверять меняете

 Auth::attemp() 

на

 $frst = auth()->guard('web'); $scnd= auth()->guard('some_guard'); 

вот так например делится разная авторизация. Вам стоит попробовать по экспериментировать

#3 Re: Laravel 5.x » Laravel 5 и Dropbox » 28.04.2016 15:42:43

через локальный диск можно вот так.. имел ввиду

$file = Storage::url('file.txt');
 return response()->download($file); 
 

в документации дропбокса есть методы

createTemporaryDirectLink 

и

 createShareableLink 

но эти ссылки ведут к дропбоксу который показывает превью
а я пытаюсь получить именно content_link

#4 Laravel 5.x » Laravel 5 и Dropbox » 27.04.2016 19:45:23

nemocoder
Ответов: 1

Доброго времени суток решил использовать dropbox как хранилище файлов создал сервис провайдер как в доках все норм put,get,. создаю и открываю файлы, теперь есть нужда по пути например

Route::get('/file/{filename}','FileController@getFileByName'); 

отдавать файл не показывая путь до самого файла через локальный диск можно вот так

 return response()->download($link); 

но драйвер дропбокса не работает на url getFile и тд чтобы получить ссылку на файл. какие решения тут могут быть ? подскажите

#6 Laravel 5.x » Laravel Пост запрос » 13.09.2015 16:53:02

nemocoder
Ответов: 1

Ситуация такова, есть три поля 'average_bills', 'kitchen', 'district'
отправить могут например только 'average_bills' или на оборот все кроме него. Пробывал has, only, но работает не как нужно вот например only

if(Request::only('kitchen')){
            $restos = Resto::whereHas('kitchens', function ($query)use ($kitchen) {
                    $query->where('id', $kitchen);
                })
                ->get();
        }elseif(Request::only('district')){
            $restos = Resto::where(function($q )use ($district)
            {

                $q->where('district', '=', $district);

            })
                ->get();
        }elseif(Request::only('average_bills')){
            $restos = Resto::where(function($q )use ($average_bills)
            {
                $q->where('average_bills', '=', $average_bills);


            })
                ->get();
        }else{
            $restos = Resto::where(function($q )use ($average_bills,$district)
            {
                $q->where('average_bills', '=', $average_bills);
                $q->where('district', '=', $district);

            })
                ->whereHas('kitchens', function ($query)use ($kitchen) {
                    $query->where('id', $kitchen);
                })
                ->get();
        }
       
        $restos->shuffle();
        return $restos;

кто сталкивался с такой задачей или знает решение HELP!!!

#7 Re: Laravel 5.x » Laravel belongsToMany » 10.09.2015 20:03:30

сработало

 
 $restos = Resto::whereHas('services', function($query)use ($service){
            $query->whereIn('id',$service);
        })
            ->whereHas('kitchens', function($query)use ($kitchen){
                $query->whereIn('id',$kitchen);
            })
            ->get();

#8 Re: Laravel 5.x » Laravel belongsToMany » 09.09.2015 18:33:02

Arat пишет:
nemocoder пишет:

стойте а как быть если нужно проверить сразу в двух пивотных таблицах на наличие объектов с заданным id ?

Уточните вопрос.
Как вариант еще оно отношение запилить и пользовать.

Смотри у меня модель Resto связывается еще с Service

public function services()
    {
        return $this->belongsToMany('App\Service')->withTimestamps();
    }


public function restos()
    {
        return $this->belongsToMany('App\Resto');
    }

для проверки kitchens я делаю так

        $services = Request::get('services');
       
        $kitchen = Request::get('kitchen');
        
        $restos = Resto::whereHas('kitchens', function ($query)use ($kitchen) {
                $query->whereIn('id', $kitchen);
            })->get();

но мне в запросе приходит еще services по аналогии точно так же нужно проверить вместе с kitchens

#9 Re: Laravel 5.x » Laravel belongsToMany » 08.09.2015 23:09:23

стойте а как быть если нужно проверить сразу в двух пивотных таблицах на наличие объектов с заданным id ?

#11 Laravel 5.x » Laravel belongsToMany » 08.09.2015 19:53:27

nemocoder
Ответов: 5

Доброго времени суток, возможно не правильно сформулирую свой вопрос, вообщем такая задача:
поиск заведений по кухням
использую отношение многие к многим

Resta model

public function kitchens()
{
return $this->belongsToMany('App\Kitchen')->withTimestamps();
}


Kitchen model

public function resto()
{
return $this->belongsToMany('App\Resto');
}

допустим с формы приходит массив с id кухни, как получить заведение у которых есть эти кухни ?

#13 Laravel 5.x » Laravel Push Notification » 27.08.2015 18:05:59

nemocoder
Ответов: 0

Всем привет, пишу API для ios & android приложения, есть необходимость отправлять пуш - уведомления, решил заюзать пакет davibennun/laravel-push-notification

поставил настроил по инструкции, решил проверить, попросил коллег по проекту скинуть тестово device_token одного девайса на андроиде
как в доках решил проверить

 
PushNotification::app('appNameAndroid')
            ->to($deviceToken)
            ->send('Hello World, i`m a push message');

на что ответили ошибкой 401 Forbidden; Authentication Error Gcm.php

 
if ((bool) $this->response->getSuccessCount()) {
                foreach ($tokensRange as $token) {
                    $pushedDevices->add($push->getDevices()->get($token));
                }
            }

но я так и не понял проблема в токене или в самом GCM. есть кто сталкивался с такой задачей и решил? помогите пжл

#15 Re: Laravel 5.x » Авторизация через социалки » 22.06.2015 13:17:39

Ну как? разобрался? я просто не могу понять будет ли свой socialite работать с http://socialiteproviders.github.io/ параллельно ? так как во втором нет fb и твитера

#16 Laravel 5.x » Laravel 5 pagination и infinite scroll » 30.05.2015 13:50:09

nemocoder
Ответов: 1

Плз хелп у меня что то не получается как у чуваков со стэковерфоллоу http://stackoverflow.com/questions/1648 … 1#22055221

кто нибудь делал на подобие или у кого есть свой способ помогите sad

#17 Re: Laravel 4 » ajax форма » 08.04.2015 13:10:21

constb пишет:

}%вместо %%e.preventDefault()%% достаточно вернуть из обработчика %%false%% - это обеспечит и %%preventDefault%% и %%stopPropagation%% причём кроссбраузерно, не только для современных браузеров. вторая проблема - при таком способе формирования payload'а запроса не искейпится содержимое полей. учитывая что в обработчике форма приходит в виде %%this%% достаточно в качестве %%data%% передать %%$(this).serialize()%% - это и проще и правильнее, а главное в форме присутствует и csrf-токен, который тоже будет передан. %%cache: false%% на post-запросе не нужен - посты не кэшируются. и можно использовать %%$.post%% вместо общего %%$.ajax%%.

%%(js)
$.post($(this).attr('action'), $(this).serialize(), function (responce) {
    ...
}, 'json');
return false;
%%

как-то так

спасибо учту

#18 Re: Laravel 4 » ajax форма » 07.04.2015 22:36:16

решено!

if (msg ['msg'] == true){
                                sweetAlert("Good job!", "Ваша заявка отправлена!", "success");
                            }else {
                                sweetAlert("Oops...", "Вы ввели не всю информацию, вернитесь и заполните все поля!", "error");
                            }

#19 Re: Laravel 4 » ajax форма » 07.04.2015 21:12:01

Дмитрий пишет:

Попробуйте так:

if (msg ){
                                sweetAlert("Good job!", "Ваша заявка отправлена!", "success");
                            }else {
                                sweetAlert("Oops...", "Вы ввели не всю информацию, вернитесь и заполните все поля!", "error");
                            }

Если не поможет - то смотрите, что приходит в msg, вначале success-функции добавьте:

console.log(msg);

И посмотрите, что в консоли выведется.

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

#20 Re: Laravel 4 » ajax форма » 07.04.2015 20:15:54

вечно выдает что ошибка с js возвращает не msg == true

                                                        {{Form::open(array('id' => 'frm', 'method' => 'post' ))}}
                                                        <div class="form-group">

                                                            {{ Form::email('email', null, array('class' => 'form-control',"placeholder" => "Your E-mail")) }}
                                                        </div>
                                                        <div class="form-group">
                                                            <div>

                                                                {{ Form::password('password', array('class' => 'form-control', "placeholder" => "Password")) }}
                                                                <br />
                                                            </div>


                                                        </div>
                                                        <div class="form-group">
                                                            <button type="submit" class="btn btn-block btn-warning btn-embossed">Sign Up</button>
                                                        </div>
                                                    {{Form::close()}}
$("document").ready(function(){
                $("#frm").submit(function(e){
                    e.preventDefault();
                    
                    var query = "email=" + $("input[name=email]").val() +
                            "&password=" + $("input[name=password]").val();
                    $.ajax({
                        type: "POST",
                        url : "http://localhost:8000/frontend/users/register",
                        data : query,
                        cache: false,
                        //dataType : "json",
                        success : function(msg){

                            if (msg == 'true'){
                                sweetAlert("Good job!", "Ваша заявка отправлена!", "success");
                            }else {
                                sweetAlert("Oops...", "Вы ввели не всю информацию, вернитесь и заполните все поля!", "error");
                            }

                        }

                    },"json");

                });
            });
public function postRegister() {
        if(Request::ajax()){
            $rules = User::$validation;
            $validation = Validator::make(Input::all(), $rules);
            if ($validation->fails()) {
                
                return Response::json(array('msg'=> false,));
            }
            $user = new User();
            $user->fill(Input::all());

            $id = $user->register();
            
            return Response::json(array('msg'=> true,));
           
        }

    }

в модели

public function register() {
        $this->password = Hash::make($this->password);
        $this->activationCode = $this->generateCode();
        $this->save();
        Log::info("User [{$this->email}] registered. Activation code: {$this->activationCode}");
        $this->sendActivationMail();
        return $this->id;
    }
    public function sendActivationMail() {
        $activationUrl = action(
            'UsersController@getActivate',
            array(
                'userId' => $this->id,
                'activationCode'    => $this->activationCode,
            )
        );
        $that = $this;
        Mail::send('emails/activation',
            array('activationUrl' => $activationUrl),
            function ($message) use($that) {
                $message->to($that->email)->subject('Спасибо за регистрацию!');
            }
        );
    }

#21 Re: Laravel 4 » ajax форма » 07.04.2015 10:41:43

constb пишет:

}%method="post" на форме забыл?

разве не автоматом ?

#22 Laravel 4 » ajax форма » 05.04.2015 18:32:35

nemocoder
Ответов: 9

Выходит ошибка что  MethodNotAllowedHttpException
вот код

форма
                        {{Form::open(array('id'=>'frm'))}}
                            <label class="h6">Имя / Фамилия</label>
                            <input type="text" name="name" required="required" class="form-control">
                            <label class="h6">E-mail</label>
                            <input type="email" name="email" required="required" class="form-control">
                            <label class="h6">Сообщение</label>
                            <textarea rows="7" name="message" required="required" class="form-control"></textarea><br />

                            <button type="submit" class="btn btn-primary" ><span class="fui-mail"></span></button>
                        {{Form::close()}}
<script>

        $("document").ready(function(){
            $("#frm").submit(function(e){
                e.preventDefault();
                var name = $("input[name=name]").val();
                var email = $("input[name=email]").val();
                var message = $("textarea[name=message]").val();
                var dataString = 'name='+name+'&email='+email+'&message'+message;
                $.ajax({
                    type: "POST",
                    url : "http://example.com/contact",
                    data : dataString,
                    dataType : "json",
                    success : function(msg){

                        if (msg == 'ok'){
                            sweetAlert("Good job!", "Ваша заявка отправлена!", "success");
                        }else {
                            sweetAlert("Oops...", "Вы ввели не всю информацию, вернитесь и заполните все поля!", "error");
                        }

                    }

                },"json");

            });
        });
    </script>
Route::post('/contact', function(){
    if (Request::ajax()){
        $user = array(
            'email' => Input::get('email')
        );
        $data = array(
            'name' => Input::get('name'),
            'email' => Input::get('email'),
            'message_body' => Input::get('message')
        );
        $rules = array(
            'name'  => 'required|max:50',
            'email' => 'required|email',
            'message_body' => 'required|min:6',
        );
        $validation = Validator::make($data, $rules);

        if ($validation->fails())
        {
            return Redirect::to('/about')->withErrors($validation)->withInput();
        }


        Mail::send('emails.contact', $data, function($message) use ($user) {
            $message->to('test@example.com', 'RS Staff')->subject('Новое сообщение ');
        });
        return Response::json(array('msg' => 'ok'));
    }
});

может где не так сделал по советуйте что делать и посмотрите со стороны виднее будет если где то что не так

#23 Re: Laravel 4 » Server Error » 25.03.2015 11:02:44

Александр пишет:
nemocoder пишет:

так же хочу добавить к проблеме установки laravel 4 на хостинг если у вас ошибка 500 и из логов ошибок есть Option MultiViews not allowed here

добавить вот так к примеру

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride Indexes Options=All,MultiViews
Order allow,deny
allow from all
</Directory>

решение взял по этой ссылки smile

http://kx.cloudingenium.com/linux/apach … s-allowed/

а в каком файле это добавлять?

в ссылке все есть

#24 Re: Laravel 4 » Laravel-Excel » 16.02.2015 20:09:51

schel4ok пишет:

по-моему вы занимаетесь какой-то фигней
всё вообще не так делается

<?php

class XLSSeeder extends Seeder {

	public function run()
	{
		$xls = 'app/database/seeds/seeder.xlsx';
		$book = Excel::load($xls, 'UTF-8')->all();

		foreach($book as $sheet)
		{   
			if ($sheet->getTitle() === 'categories') 
			{	Category::truncate();
				foreach($sheet as $row)
				{
					$category = Category::create([
						'id' => $row->id,
						'parent_id' => $row->parent_id,
						'level' => $row->level,
						'title' => $row->title,
						'sef' => $row->sef,
						'body' => $row->body,
						'image' => $row->image,
						'metatitle' => $row->metatitle,
						'metakey' => $row->metakey,
						'metadesc' => $row->metadesc,
						]);
    			}
    		}


    		if ($sheet->getTitle() === 'menu') 
			{	Menu::truncate();
				foreach($sheet as $row)
				{
					$menu = Menu::create([
						'id' => $row->id,
						'parent_id' => $row->parent_id,
						'level' => $row->level,
						'title' => $row->title,
						'route' => $row->route,
						'class' => $row->class,
						'metatitle' => $row->metatitle,
						'metakey' => $row->metakey,
						'metadesc' => $row->metadesc,
						]);
    			}
    		}
    	}
	}
}

почему это, мой метод  фигня ? делай как можешь wink а если не получилось так это не у меня руки сам понимаешь

#25 Re: Laravel 4 » Загрузка файлов (изображений). » 16.02.2015 20:08:14

 if (Input::hasFile('file')) {
                $dir = '/uploads'.date('/Y/m/d/');
            
            do {
                $filename = str_random(30).'.jpg';
            } while (File::exists(public_path().$dir.$filename));
            Input::file('file')->move(public_path().$dir, $filename);
            $profile->image = $dir.$filename;
            $profile->save();
            }

делал чисто для jpg но поставишь при валидации (mime) и тд сможешь сделать все, можешь имя сделать оригинальным именем и расширением

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