Good, I would like to know that a tool or method could be used for a dynamic record filter, for example, I have a file called contacts.blade.php
where I show a kind of address book, what I want to do is place a mechanism (Input , Select) that allows me to filter the contacts faster as the user chooses, I leave exactly the frag of code that will show according to the filter:
<!-- Contacts -->
@foreach($Contacts as $Contact)
<div class="col-md-4 col-sm-4 col-xs-12 profile_details">
<div class="well profile_view">
<div class="col-sm-12">
<h4 class="brief"
<i>{{ $Contact->positions }} |
<small>{{ $Contact->depart }}</small></i>
</h4>
<div class="left col-xs-7">
<h2>{{ $Contact->f_name }} {{ $Contact->l_name }}</h2>
<ul class="list-unstyled">
<li><i class="fa fa-envelope-o"></i> {{ $Contact->email }}</li>
<li><i class="fa fa-phone"></i> 40-215</li>
<li><i class="fa fa-calendar"></i> {{ Carbon\Carbon::parse($Contact->date_bjob)->diffForHumans() }}</li>
</ul>
</div>
<div class="right col-xs-5 text-center">
<img src="{{ Gravatar::src($Contact->email) }}" alt="" class="img-circle img-responsive">
</div>
</div>
<div class="col-xs-12 bottom text-center">
<div class="col-xs-12 col-sm-6 emphasis">
</div>
<div class="col-xs-12 col-sm-6 emphasis">
<button type="button" class="btn btn-success btn-xs"> <i class="fa fa-user">
</i> <i class="fa fa-comments-o"></i> </button>
<a href="{{ route('profile', $Contact->username ) }}" class="btn btn-primary btn-xs">
<i class="fa fa-user"> </i> Ver Perfil
</a>
</div>
</div>
</div>
</div>
@endforeach
<!-- ./Contacts -->
The Controller
public function index()
{
Carbon::setLocale('es');
$Contacts = dk_profile_user::
select('dk_profile_user.id','dk_profile_user.f_name','dk_profile_user.l_name','users.email','dk_profile_user.address',
'dk_profile_user.status','dk_profile_user.image_profile','dk_profile_user.date_bday',
'dk_profile_user.date_bjob','dk_master_area.name as depart','dk_area.name as area','dk_profession.name as profession',
'dk_positions.name as positions','dk_profile_user.username')
->join('dk_area','dk_area.id','=','dk_profile_user.id_area')
->join('dk_master_area','dk_master_area.id','=','dk_area.id_master_area')
->join('dk_profession','dk_profession.id','=','dk_profile_user.id_profession')
->join('dk_positions','dk_positions.id','=','dk_profile_user.id_positions')
->join('users','users.id','=','dk_profile_user.id')
->get();
return View('/contacts')->with('Contacts',$Contacts);
}
UPDATE:
According to the response of @Pablo Contreras, try to adapt it to my project, but it returns an error in the console: POST http://192.168.21.210:8000/contacts/m/0 500 (Internal Server Error)
My Route:
// CONTACTOS
Route::get('contacts','contacts\ContactsController@index');
Route::get('listall/{page?}','contacts\ContactsController@listall');
Route::post('contacts/{field1}/{field2}','ContactsController@listadoContactos');
My Controller
public function listadoContactos(Request $req, $field1, $field2)
{
if($req->ajax()) {
$result = dk_profile_user::
select('dk_profile_user.id',DB::raw('CONCAT(dk_profile_user.f_name, " ", dk_profile_user.l_name) AS name'),
'users.email','dk_profile_user.address','dk_profile_user.status','dk_profile_user.image_profile',
'dk_profile_user.date_bday', 'dk_profile_user.date_bjob','dk_master_area.name as depart',
'dk_area.name as area','dk_profession.name as profession','dk_positions.name as positions',
'dk_profile_user.username')
->join('dk_area','dk_area.id','=','dk_profile_user.id_area')
->join('dk_master_area','dk_master_area.id','=','dk_area.id_master_area')
->join('dk_profession','dk_profession.id','=','dk_profile_user.id_profession')
->join('dk_positions','dk_positions.id','=','dk_profile_user.id_positions')
->join('users','users.id','=','dk_profile_user.id');
if($field1!=="") {
$result->where('dk_profile_user.name','like','%'.$field1.'%');
}
if ($field2!==0) {
$result->where('dk_profile_user.area','=',$field2);
}
$results = $result->get();
return Response::json(array('resultado' => $results));
}
}
Script in my view
//Para un input type text:
$('#person').keyup(function(e) {
Contactos();
});
//Para un select:
$('#departament').on( 'change', function (e) {
Contactos();
});
function Contactos() {
var field1 = $("#person").val();
var field2 = $("#departament").val();
$.post("contacts/"+field1+"/"+field2+"" ,function(response){
console.log(response.resultado);
});
};