Laravel по-русски

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

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

#1 Re: Laravel 5.x » Создание фильтров для товаров. » 16.07.2015 13:42:31

Тебе необходимо использовать Query Builder.

PHP
$q = new Product;
if(
Input::has('brand_id')) {
  
$q $q->where('brand_id'Input::get('brand_id'));
}
if(
Input::has('country_id')) {
  
$q $q->where('country_id'Input::get('country_id'));
}
$q $q->where('in_stock'true);
$products $q->get();

#2 Re: Laravel 4 » Занесение данных через форму, удаление и редактирование на ajax » 20.04.2015 15:38:11

А в чем проблема то? Так же как и добавляя данные, отправляешь POST запрос на удаление.

Код писал на лету, могут быть опечатки где то… но суть думаю поймешь =)

routes.php

PHP
Route::post('item/delete', ['as' => 'item.delete''uses' => 'ItemController@destroy']);

ItemController.php

PHP
public function destroy() {
  if(
Input::has('id')) {
    
$item Item::find(Input::get('id'));
    
$item->delete();
    return 
Response::json(['success' => true], 200);
  }
  return 
Response::son(['success' => false], 400);
}

index.blade.php

xml{{ Form::open(['route' => 'item.delete', 'id' => 'form']) }}
{{ Form::hidden('id', 1) }}
{{ Form::submit('delete item with id = 1') }}
{{ Form::close() }}

<script>
$('#form').submit(function() {
  var form = $(this);
  $.ajax({
    type: 'POST',
    url: form.attr('action'),
    data: form.serialize()
})
</script>

#3 Re: Laravel 4 » роуты + мультиязычность » 17.04.2015 17:07:36

tinyint = 0/1

Вообще, в некоторых проектах для перевода подключаю poedit и тогда в App::setLocale нужно указывать локаль языка (en_US, ru_RU), вместо аббревиатуры.

#4 Re: Laravel 4 » роуты + мультиязычность » 15.04.2015 17:11:55

Мой способ маршрутизации, пока не подводил ☺ если есть какие то комментарии или поправки буду рад услышать ☺

Table «languages» fields [’abbr’, ’title’, ’is_default’]

Language.php

PHP
class Language extends Eloquent {

    protected 
$table 'languages';

    public 
$timestamps false;

    public 
$code;

    public function 
set() {
        
$code Request::segment(1);
        if(
$code) {
            
$language Language::whereAbbr($code)->first();
            if(
$language) {
                
$this->code $code;
                
$this->setVariables($language);
            } else {
                
header("Location: " Config::get('app.url') . "/" $this->getDefault());
                exit;
            }
        } else {
            
$this->code $this->getDefault();
        }
        return 
$this->code;
    }

    private function 
getDefault() {
        
$language Language::whereIsDefault(true)->first();
        
$this->setVariables($language);
        return 
$language->abbr;
    }

    private function 
setVariables($language) {
        
Session::put('language_id'$language->id);
        
Session::put('language_abbr'$language->abbr);
        
Session::put('language_title'$language->title);
        
define('LANG'$language->abbr);
        
App::setLocale($language->abbr);
    }

    public static function 
change($language) {
        
$url Request::url();
        
$url_new str_replace('/'.Request::segment(1), '/'.$language$url);
        return 
$url_new;
    }

}

routes.php

PHP
$language = new Language();
$language->set();

Route::get('/', function() use ($language) {
    return 
Redirect::to('/' $language->code);
});

Route::group(array('prefix' => $language->code), function() {
// твоя маршрутизация
});

#5 Re: Laravel 4 » Подшаблоны в Blade » 15.04.2015 15:34:07

Если меню находится на каждой странице, можно использовать share, как посоветовал Quiss

PHP
class NewsController extends BaseController {

   public function 
index() {
       
$categories Category::get();
       return 
View::make('news.index'compact('categories'));
   }

}

/news/index.blade.php

xml<html>
    <head> ... </head>
    <body>
        @include('includes.menu', ['categories' => $categories])
    </body>
</html>

/includes/menu.blade.php

xml@if($categories)
    <ul>
    @foreach($categories as $category)
        <li>{{ $category->title }}</li>
    @endforeach
    </ul>
@endif

По поводу активных ссылок, смотря как у Вас устроена маршрутизация, можно использовать URL::currentRouteName() или если парсить часть ссылки Request::segment(n)

(slug — ЧПУ категории)
И тогда получается что то вроде…

xml@foreach($categories as $category)
    <li class='@if(Request::segment(1) == $category->slug) active @endif'>{{ $category->title }}</li>
@endforeach

#6 Re: Laravel 4 » Ajax » 25.03.2015 13:57:36

Может быть где то синтаксические ошибки, писал на ходу, но суть думаю уловил ;)

<script>
  $('#id_variant').change(function(){
    $.ajax({
      type: 'post',
      url: your.url,
      data: {id: $(this).val()},
      success: function(data) {
        // your action with response
      }
    });
  });
</script>
public function entropyForVariant() {
  if(Input::has('id')) {
    $id = Input::get('id');
    $variant = Variant::find($id);
    return Response::json(['success' => true, 'variant' => $variant]);
  }
  return App::abort(400);
}

#7 Re: Общий раздел » Авторизация Facebook и Google » 22.01.2015 18:40:32

Необходимо создать route, который будет ссылаться на эту функцию.

public function loginWithFacebook() {

    // get data from input
    $code = Input::get( 'code' );

    // get fb service
    $fb = OAuth::consumer( 'Facebook' );

    // check if code is valid

    // if code is provided get user data and sign in
    if ( !empty( $code ) ) {

        // This was a callback request from facebook, get the token
        $token = $fb->requestAccessToken( $code );

        // Send a request with it
        $result = json_decode( $fb->request( '/me' ), true );

        // В массиве $result содержатся все данные, которые передает вам facebook.
        dd($result);

    }
    // if not ask for permission first
    else {
        // get fb authorization
        $url = $fb->getAuthorizationUri();

        // return to facebook login url
         return Redirect::to( (string)$url );
    }

}

В массиве $result содержатся все данные, которые передает вам facebook.

Для каждой социальной сети этот код может немножко отличаться, т.к. отличаются запросы к данным, нужно читать документацию к API каждой, отдельной соц. сети. Допустим перед тем, что бы работал этот пример - вам необходимо создать и настроить свое приложение на facebook (вся информация как это сделать - https://developers.facebook.com) и указать app key & secret key вашего приложения, в настройках этого package..

#8 Re: Laravel 4 » Геолокация на l4 » 13.01.2015 19:53:00

Присоединяюсь к посту от Proger_XP - успешно пользуюсь этим пакетом, в нескольких проектах wink

#9 Re: Общий раздел » Авторизация Facebook и Google » 07.01.2015 19:53:11

Привет! Я использую во всех своих проектах artdarek/oauth-4-laravel - у него там в документации указаны все примеры для этих социальных сетей - 5 минут и все работает, а если с перспективой на будущее - можно посмотреть исходники методов и в дальнейшем уже использовать, не только для авторизации, но и для постов и чего нибудь еще smile

С остальными сравнить не могу, т.к. использовал только его..

#10 Re: Laravel 4 » Проблема с Eloquent » 15.12.2014 15:58:35

Оба решения должны выдавать одинаковый результат.

$user = User::find(Auth::id());
$cashes = $user->cashes; // в модели пользователя должно быть указано отношение "cashes" $this->hasMany('Cash').

Ниженаписаный код 100% должен работать, там нечему выдавать ошибку.

$cashes = Cash::where('user_id', '=', $user_id)->get()

#11 Re: Laravel 4 » Проблема с Eloquent » 12.12.2014 18:11:24

Задача не очень ясна, но может я все таки угадал и одно из решений подходит? smile

$import_id = 1; // нужный тебе ID в таблице "import"
$import = Import::find($id);

// 1-ый вариант
$cash_id = 1; // нужный тебе ID в таблице "cash"
$cash = Cash::find($cash_id);
$cash->un = $cash->un - ($import->pay_un + $import->delivery_un + $import->amt);
$cash->save();

// 2-ой вариант
$cash_id = 1;
$cash = Cash::find($cash_id);
$cash_2 = Cash::create(array('un' => $cash->un - ($import->pay_un + $import->delivery_un + $import->amt));
$user = User::find(Auth::id());
$user->cashes()->save($cash_2);

#12 Re: Laravel 4 » Геолокация и Laravel » 04.12.2014 16:07:02

$user = User::find(1);
DB::table('news')->whereBetween('lon', array($user['lon'] - 0.05, $user['lon'] + 0.05))->whereBetween('lat', array($user['lat'] - 0.05, $user['lat'] + 0.05))->get();

#13 Re: Laravel 4 » Геолокация и Laravel » 04.12.2014 15:53:18

Найти координаты пользователя можно с помощью geoip.
Дальше сам справишься или написать код?

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