Laravel по-русски

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

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

#1 Re: Laravel 4 » Route group и фильтр » 19.05.2015 14:33:44

Решили с Quiss в чате. Надо было убрать else фильтре

Route::filter('admin', function()
{
    if (!Entrust::hasRole('Admin') ) // Checks the current user
    {
        return Redirect::guest('login');
    } 
});

так как он ссылаться туда обратно. Вот такая ошибка который трудно заметит.

#2 Re: Laravel 4 » Route group и фильтр » 19.05.2015 11:22:57

Quiss пишет:

}%а Вы сделайте:
%%(php)
dd(Entrust::hasRole('Admin'))
%%

boolean true

Дело не в этом вообще. Что такое? где ошибка.

#3 Re: Laravel 4 » Route group и фильтр » 19.05.2015 10:24:59

даже тупо в таком виде не работает.

Route::group(array('before' => 'admin'), function()      
{
    Route::post('/adminrootcp/users/ban/{id}' , ['as' =>  'users.ban' ,'uses' => 'Controllers\Admin\UsersController@ban']);
    Route::post('/adminrootcp/users/unban/{id}' , ['as' =>  'users.unban' ,'uses' => 'Controllers\Admin\UsersController@unnbanned']);

    Route::resource('/adminrootcp/users', 'Controllers\Admin\UsersController');
    Route::resource('/adminrootcp/tariffs', 'Controllers\Admin\TariffController');
    Route::get('adminrootcp', 'Controllers\Admin\AdminController@index');
});

#4 Laravel 4 » Route group и фильтр » 19.05.2015 10:00:04

Nelzz
Ответов: 4

Всем привет, Есть код.

Route::group(array('before' => 'auth'), function()
{
    Route::group(array('before' => 'admin'), function()      
    {

        Route::post('/adminrootcp/users/ban/{id}' , ['as' =>  'users.ban' ,'uses' => 'Controllers\Admin\UsersController@ban']);
        Route::post('/adminrootcp/users/unban/{id}' , ['as' =>  'users.unban' ,'uses' => 'Controllers\Admin\UsersController@unnbanned']);

        Route::resource('/adminrootcp/users', 'Controllers\Admin\UsersController');
        Route::resource('/adminrootcp/tariffs', 'Controllers\Admin\TariffController');
        Route::get('adminrootcp', 'Controllers\Admin\AdminController@index');
    });
});

фильтр admin

Route::filter('admin', function()
{
    if (!Entrust::hasRole('Admin') ) // Checks the current user
    {
        return Redirect::guest('login');
    } 
    else 
    {  
        return Redirect::to('adminrootcp');  
    } 
});

почему так не работает? Точнее не идет Redirect из фильтра.

#5 Re: Laravel 4 » Json данные » 19.02.2015 13:37:38

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

Вы из базы хотите точно в таком формате получить или вытащить из базы и подставить в ответ? Если подставить, то так можно:

# Получаем все имена из базы
$names = DB::table('таблица')->lists('извлекаемое поле');

# Возвращаем ответ
return 
    Response::json($names);

Спасибо.

#6 Laravel 4 » Json данные » 19.02.2015 07:11:52

Nelzz
Ответов: 2

Всем привет.

Есть код.

return Response::json(['username1','username2','username3']);

Как получить имя пользователя из бд в json,точно в таком формате?

#8 Re: Laravel 4 » Функция » 20.01.2015 12:52:43

Так не понял где косяк. Саму функцию же он по циклу катает и передает.

#9 Re: Laravel 4 » Функция » 20.01.2015 10:59:13

Proger_XP пишет:

}%В PHP 5.3 при использовании внешних переменных в замыкании нужно добавлять **use**.
%%(php)
     Mail::send('emails.tasks.expire', $dataArray, function ($message) use ($userdata) {
%%

Сделал так

Mail::send('emails.tasks.expire', $dataArray, function ($message) use ($userdata) {
      $message->to($userdata->email, $userdata->fullname)->subject('Срок задачи истек!');
});

Ошибок нету. Папка OpenServer\userdata\tmp\email пусто

конфиг mail.php

return array(
	'driver' => 'mail',
	'host' => 'smtp.mailgun.org',
	'port' => 587,
	'from' => array('address' => 'test@mail.com', 'name' => 'Test'),
	'encryption' => 'tls',
	'username' => null,
	'password' => null,
	'sendmail' => '/usr/sbin/sendmail -bs',
	'pretend' => false,
);

как теперь проверит?  Сама отправка почты работает,проверял.

#10 Re: Laravel 4 » как сделать блог с категориями » 28.12.2014 17:56:39

Может попроще показываешь,все категории, во view категории передается id по нему вытаскиваешь все посты.

2) в таблице постов category_id

https://github.com/etrepat/baum

#11 Re: Laravel 4 » Хранение файла » 26.12.2014 08:49:15

Не по теме. Но все же.

Есть стандартный код. У каждого пользователя свой задачи и соответственно они должны редактировать только свой данные.

В таблице задач есть поля user_id

как тут быть?

код

public function edit($id)
    {
        $task = $this->tasks->find($id);

        if (is_null($task))
        {
            return \Redirect::route('tasks.index');
        }

        return \View::make('tasks.edit', compact('task'));
    }

#12 Laravel 4 » Хранение файла » 25.12.2014 13:16:03

Nelzz
Ответов: 3

Всем привет.  Есть пользователи  который загружает документы итд. Как ограничить доступ к этим файлам? Чтоб бы ползовател имел доступ только свойм файлам и все.

файл загружается внутри public/uploads

как в таком случай быть?

#14 Re: Laravel 4 » Связи » 12.12.2014 13:31:48

SMGladkovskiy пишет:

Вы по-английски читать умеете?
Задача принадлежит контакту: Task belongs to Contact
Задача принадлежит компании: Task belongs to Company

Где Вы в этих предложениях увидели множественное число? Одна задача принадлежит одному контакту и компании. Соответственно, когда хотите получить эти данные, то и обращайтесь к соответствующим свойствам с учётом множественности числа:

$task->company;

Что ж Вы бездумно копируете то, что Вам предлагают сделать, не задумываясь о том, что это вообще такое? Что же за отношение к другим? Вы хотя бы себя уважайте (раз плюёте на других) и не задавайте одних и тех же вопросов, ответы на которые заложены в основах той тематики о которой спрашиваете, а вам посоветовали их (эти основы) почитать/изучить! Прилагайте усилия сами, уважайте чужое время!

Что ты обижаешься. Ладно сам разберусь.

#15 Re: Laravel 4 » Связи » 12.12.2014 12:15:08

SMGladkovskiy пишет:

У Вас контакт и компания - это свойство задачи, судя по структуре БД. Соответственное, перепешите связи в модели задачи:

    public function contact()
    {
        return $this->belongsTo('Contact', 'id_cont');
    }


    public function company()
    {

        return $this->belongsTo('Company', 'id_com');
    }

Почитайте тщательно про логику ОРМ, её семантику, смысл, лексику - будет проще работать с Eloquent

Ок.

так не работает

  $task = Task::find(17); 

      foreach($task->contacts as $contacts){

           var_dump($contacts->contacts);

      }

мне надо еще на вюхе показывал всю задачу их компанию и контакта.

щяс он таком виде.

$tasks = $this->task->all();

 return \View::make('dashboard.tasks.taskslists', compact('tasks'));

и

@foreach ($tasks as $task)
				<tr>
                    <td><input name="checkboxlist" type="checkbox" value="{{{ $task->id }}}"></td>
					<td>{{{ $task->start_date }}}</td>
                    <td>{{{ $task->status() ? 'Статус1' : 'Статус2' }}}</td>

                    <td>{{{ $task->end_date }}}</td>
                    <td>{{ link_to_route('tasks.edit', 'Edit', array($task->id), array('class' => 'btn btn-info')) }}</td>
                    <td>
                        {{ Form::open(array('method' => 'DELETE', 'route' => array('tasks.destroy', $task->id))) }}
                            {{ Form::submit('Delete', array('class' => 'btn btn-danger')) }}
                        {{ Form::close() }}
                    </td>
				</tr>
			@endforeach

мне не понятно какой запрос именно делать. как таком случай быть?

#16 Re: Laravel 4 » Связи » 12.12.2014 10:21:18

Еще раз подниму тему.

Ест модель задач,связи.

 public function contacts()
    {
        return $this->hasOne('Contact','id_cont');
    }

    public function company()
    {

        return $this->hasOne('Company','id_com');
    }

таблица задач     

id
id_com
id_cont
start_date
end_date

где id_com и id_cont ид компании и задач

как мне теперь вытащит? по задачу данные компании и контакта?

#17 Re: Laravel 4 » Файл » 12.12.2014 09:30:42

Aleksei пишет:

Напиши ответ, пожалуйста, а то я бьюсь с этой проблемой. У меня ошибки валятся, что нет такого роста и все. Какие бы ссылки не генерировал.


Загружаешь как обычно.

В роутере

    // Загрузка файла
    Route::get('/download/{file}',
       [ 'as' => 'download.file',
        'uses' => 'Controllers\Dashboard\ContactsController@getDownload']);

в контроллере

public function getDownload($file)
{

    $file = \Files::where('id','=',$file)->firstOrFail();

    $filedestination = public_path(). "/uploads/".$file->name;

    $headers = [
        'Content-Type: application/octet-stream'
    ];

    return \Response::download($filedestination,$file->name,$headers);
}

вьюшка

@if(count($contact->files))
{{ link_to_route('download.file', $contact->files->name, $contact->files->id) }}
<i class="fa fa-download fa-lg"></i>
@endif

база files (id name size)

#18 Re: Laravel 4 » Laravel-Excel » 06.12.2014 14:41:39

nemocoder пишет:
Nelzz пишет:

nemocoder, как в бд заносишь таблицу ? покажи код,тоже делаю такую фишку интересно.

легко
контроллер

.......
Excel::load(public_path().$dir.$filename , function($reader)
        	{
        		$result = $reader->get();
        		foreach ($result as $key => $value) {
					//для проверки можешь с перва вывести так посмотреть берутся ли значения 
                                        //echo $value->date.'----'.$value->name.'----'.$value->adress_to.'----'.$value->operator.'<br>';
					
					//Model->твоя модель
                                          $data = Model::postAdd($value);


        		}
        	})->get();
        //return Redirect::to('/io')->with('success', 'You have been importing xls');

модель

protected $table = 'твоя таблица';
protected $fillable = array(
		
        'date', 
        'name',
        'adress_to',
        'operator',
        
        
    );
public static function postAdd($exelData)
{ 
	$post = Import::create([
			'date' => $exelData['date'],
			'name' => $exelData['name'],
			'adress_to' => $exelData['adress_to'],
			'operator' => $exelData['operator']
			
	]);
		return $post;
}

Спасибо. Кстати я тоже из Казахстана, Атырау smile

#19 Re: Laravel 4 » Laravel-Excel » 05.12.2014 13:29:20

nemocoder, как в бд заносишь таблицу ? покажи код,тоже делаю такую фишку интересно.

#20 Re: Laravel 4 » Файл » 19.11.2014 15:21:17

Proger_XP пишет:

}%Как делается ссылка? Вообще, в app/storage не нужно (и даже нельзя) хранить доступное извне, для этого есть папка public. Иначе у вас там можно просмотреть логи, коды скомпилированных шаблонов и т.п.

Спасибо. Разобрался уже.

#21 Laravel 4 » Файл » 18.11.2014 09:30:21

Nelzz
Ответов: 4

Всем привет,еще раз)

Сделал загрузку файлы,теперь хочу сделать ссылку на сам файл. Тут и проблема.

домен у меня выглядит так http://ccscrm/, ссылка на файл так C:\Web\OpenServer\domains\ccscrm\app\storage/test.txt

при наведении вид ссылки file:///C:\Web\OpenServer\domains\ccscrm\app\storage/test.txt

как сделать нормальную ссылку на саму файл?

#22 Re: Laravel 4 » Связи » 14.11.2014 07:57:46

slider23 пишет:

Вы неправильно называете связи. Комментарии надо называть comments() , а контакты - contacts() - их же Many, несколько, и возвращается коллекция объектов, а не один объект. На работу это не влияет, но на понимание кода - влияет сильно. Вот вы, например, попались на эту семантическую ловушку в самом начале, когда запросили сие:

$posts = Post::all();
foreach($posts as $post) {
echo $post->comment->id;
}

$post->comment - это не один объект, у которого есть id, это коллекция. Если бы оно называлось comments , вы бы это заметили, и сделали по нему foreach().

По теме - все банально.

$company = Company::find($id); // ну или, если вы тут запрашиваете несколько компаний, добавьте with("contacts") чтобы запросов в базу было меньше

foreach($company->contacts as $contact){

echo $contact->name;
echo $contact->telephone;

}

Четко и ясно smile получилось с первого раза. Мой косяк что не объяснил задачу как надо.

Спасибо парни.

#23 Re: Laravel 4 » Связи » 13.11.2014 16:47:06

SMGladkovskiy пишет:
Nelzz пишет:

Что я хочу сделать сказал же "Через пост вытащит данные комента" Задача моя точно такая же,но в другом виде. Я специально cделал пример с постом и коментом,так будет легче понятно и вам и мне.  Мы на правильном пути smile

Вы хотите вытащить данные коммента из коллекции постов? Какого именно коммента? какого именно поста? Какие граничные условия? Для чего именно это делается? Конкретно и предметно давайте, а то у Вас сферический конь в вакууме и Вы задаётесь вопросом, как далеко он улетит, если он наестся десятью кило гороха и пропердится...

Если задлача так и стоит - вывести все посты и все комменты к ним на одной странице, то именно перечислениями коллекций и отображением данных (через вьюшки), Вы данную задачу и решите.
Что именно у Вас не получается и какая именно задача перед Вам стоит? Я не спрашиваю, как Вы решили эту задачу решить, а именно первоначальные, так сказать, бизнес-требования. Например, "отобразить все комментарии к посту в списке с отображением даты, автора и содержания" - вот так.

Я лучше объясню суть задачи. У меня есть модели Компании и Контакта.

Модель Контакта тут только связь

 public function company()
 {

      return $this->belongsTo('Company','id_com');


}

модель Компания тут тоже связь

 public function contact()
 {

       return $this->hasMany('Contact','id_com');

 }

связ идет через Контакты на Компанию. В таблице Контакты есть поля id_com (id компании)

Так вот когда захожу на компанию (show) через его ид должен выташит все контакты с таким ид на id_com. Мне нужно контакты компании.

Так вот как мне сделать такой запрос через модель компании с выборкой? Теперь мы вернулись из чего начинали,тут тоже самое анология)

#24 Re: Laravel 4 » Связи » 13.11.2014 16:10:52

SMGladkovskiy пишет:

Распишите нормально отношения:

Class Post extends Eloquent {

     public function comments()
     {
          
         return $this->hasMany('Comment','posts_id');    
     }

В коде при выгрузке постов (выгружаете коллекцию), у Вас будут в каждой модели в этой коллекции ещё комменты (коллекции).

$posts = Post::with('comments')->get();

foreach($posts as $post)
{
    $comments_of_posts[$post->id] = $post->comments->toArray();
}

И вот $comments_of_posts содержит массив с комментами для постов.

Если Что-то в данной конструкции Вам не нравится - тогда озвучивайте задачу. Что Вы хотите сделать? И почему именно так это намереваетесь реализовать?

сделал через лист

var_dump($comments_of_posts[$post->id] = $post->comment->lists('id'));

и  var_dump($post->comment->lists('id')); тоже самое
результат как ожидалось.

array (size=1)
  0 => int 2
array (size=1)
  0 => int 3

Array to string conversion когда делаю echo,как теперь вернуть в нормальный вид? У нас он вернул массив. Надо просто вернул ид итд.

Надо еще выборку для коммента (where)

Что я хочу сделать сказал же "Через пост вытащит данные комента" Задача моя точно такая же,но в другом виде. Я специально cделал пример с постом и коментом,так будет легче понятно и вам и мне.  Мы на правильном пути smile

#25 Re: Laravel 4 » Связи » 13.11.2014 14:11:23

Получился так

$posts = Post::with('comment')->get();
	   foreach($posts as $post) {
			foreach($post->comment as $comment) {
			echo $comment->id;
       }

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

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