Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Решили с Quiss в чате. Надо было убрать else фильтре
Route::filter('admin', function()
{
if (!Entrust::hasRole('Admin') ) // Checks the current user
{
return Redirect::guest('login');
}
});
так как он ссылаться туда обратно. Вот такая ошибка который трудно заметит.
}%а Вы сделайте:
%%(php)
dd(Entrust::hasRole('Admin'))
%%
boolean true
Дело не в этом вообще. Что такое? где ошибка.
даже тупо в таком виде не работает.
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');
});
Всем привет, Есть код.
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 из фильтра.
Вы из базы хотите точно в таком формате получить или вытащить из базы и подставить в ответ? Если подставить, то так можно:
# Получаем все имена из базы $names = DB::table('таблица')->lists('извлекаемое поле'); # Возвращаем ответ return Response::json($names);
Спасибо.
Всем привет.
Есть код.
return Response::json(['username1','username2','username3']);
Как получить имя пользователя из бд в json,точно в таком формате?
Так не понял где косяк. Саму функцию же он по циклу катает и передает.
}%В 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,
);
как теперь проверит? Сама отправка почты работает,проверял.
Может попроще показываешь,все категории, во view категории передается id по нему вытаскиваешь все посты.
2) в таблице постов category_id
Не по теме. Но все же.
Есть стандартный код. У каждого пользователя свой задачи и соответственно они должны редактировать только свой данные.
В таблице задач есть поля 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'));
}
Всем привет. Есть пользователи который загружает документы итд. Как ограничить доступ к этим файлам? Чтоб бы ползовател имел доступ только свойм файлам и все.
файл загружается внутри public/uploads
как в таком случай быть?
Вы по-английски читать умеете?
Задача принадлежит контакту: Task belongs to Contact
Задача принадлежит компании: Task belongs to CompanyГде Вы в этих предложениях увидели множественное число? Одна задача принадлежит одному контакту и компании. Соответственно, когда хотите получить эти данные, то и обращайтесь к соответствующим свойствам с учётом множественности числа:
$task->company;
Что ж Вы бездумно копируете то, что Вам предлагают сделать, не задумываясь о том, что это вообще такое? Что же за отношение к другим? Вы хотя бы себя уважайте (раз плюёте на других) и не задавайте одних и тех же вопросов, ответы на которые заложены в основах той тематики о которой спрашиваете, а вам посоветовали их (эти основы) почитать/изучить! Прилагайте усилия сами, уважайте чужое время!
Что ты обижаешься. Ладно сам разберусь.
У Вас контакт и компания - это свойство задачи, судя по структуре БД. Соответственное, перепешите связи в модели задачи:
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
мне не понятно какой запрос именно делать. как таком случай быть?
Еще раз подниму тему.
Ест модель задач,связи.
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 ид компании и задач
как мне теперь вытащит? по задачу данные компании и контакта?
Напиши ответ, пожалуйста, а то я бьюсь с этой проблемой. У меня ошибки валятся, что нет такого роста и все. Какие бы ссылки не генерировал.
Загружаешь как обычно.
В роутере
// Загрузка файла
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)
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; }
Спасибо. Кстати я тоже из Казахстана, Атырау
nemocoder, как в бд заносишь таблицу ? покажи код,тоже делаю такую фишку интересно.
}%Как делается ссылка? Вообще, в app/storage не нужно (и даже нельзя) хранить доступное извне, для этого есть папка public. Иначе у вас там можно просмотреть логи, коды скомпилированных шаблонов и т.п.
Спасибо. Разобрался уже.
Всем привет,еще раз)
Сделал загрузку файлы,теперь хочу сделать ссылку на сам файл. Тут и проблема.
домен у меня выглядит так http://ccscrm/, ссылка на файл так C:\Web\OpenServer\domains\ccscrm\app\storage/test.txt
при наведении вид ссылки file:///C:\Web\OpenServer\domains\ccscrm\app\storage/test.txt
как сделать нормальную ссылку на саму файл?
Вы неправильно называете связи. Комментарии надо называть 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; }
Четко и ясно получилось с первого раза. Мой косяк что не объяснил задачу как надо.
Спасибо парни.
Nelzz пишет:Что я хочу сделать сказал же "Через пост вытащит данные комента" Задача моя точно такая же,но в другом виде. Я специально cделал пример с постом и коментом,так будет легче понятно и вам и мне. Мы на правильном пути
Вы хотите вытащить данные коммента из коллекции постов? Какого именно коммента? какого именно поста? Какие граничные условия? Для чего именно это делается? Конкретно и предметно давайте, а то у Вас сферический конь в вакууме и Вы задаётесь вопросом, как далеко он улетит, если он наестся десятью кило гороха и пропердится...
Если задлача так и стоит - вывести все посты и все комменты к ним на одной странице, то именно перечислениями коллекций и отображением данных (через вьюшки), Вы данную задачу и решите.
Что именно у Вас не получается и какая именно задача перед Вам стоит? Я не спрашиваю, как Вы решили эту задачу решить, а именно первоначальные, так сказать, бизнес-требования. Например, "отобразить все комментарии к посту в списке с отображением даты, автора и содержания" - вот так.
Я лучше объясню суть задачи. У меня есть модели Компании и Контакта.
Модель Контакта тут только связь
public function company()
{
return $this->belongsTo('Company','id_com');
}
модель Компания тут тоже связь
public function contact()
{
return $this->hasMany('Contact','id_com');
}
связ идет через Контакты на Компанию. В таблице Контакты есть поля id_com (id компании)
Так вот когда захожу на компанию (show) через его ид должен выташит все контакты с таким ид на id_com. Мне нужно контакты компании.
Так вот как мне сделать такой запрос через модель компании с выборкой? Теперь мы вернулись из чего начинали,тут тоже самое анология)
Распишите нормально отношения:
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делал пример с постом и коментом,так будет легче понятно и вам и мне. Мы на правильном пути
Получился так
$posts = Post::with('comment')->get();
foreach($posts as $post) {
foreach($post->comment as $comment) {
echo $comment->id;
}
но как то тут все не чисто через двойной подбор делать. Может есть и другой способ.