ccc

Laravel: Crud (3º parte)

PAGINACIÓN
En el ClienteControllers en el show:
$arr = Cliente::simplePaginate(5);
return \View::make('cliente/show',compact('arr'));

En la vista resources/views/cliente/show.blade.php:
@if($arr->previousPageUrl())
   <a href="{{ $arr->previousPageUrl() }}" class="btn btn-success pull-right btn-sm">Anterior <i class="fa fa-arrow-circle-right"></i></a>
@endif

@if($arr->nextPageUrl())
   <a href="{{ $arr->nextPageUrl() }}" class="btn btn-success pull-right btn-sm">Siguiente <i class="fa fa-arrow-circle-right"></i></a>
@endif

Métodos de paginator:
$results->count()
$results->currentPage()
$results->firstItem()
$results->hasMorePages()
$results->lastItem()
$results->lastPage() (Not available when using simplePaginate)
$results->nextPageUrl()
$results->perPage()
$results->previousPageUrl()
$results->total() (Not available when using simplePaginate)
$results->url($page)


Subir ficheros tipo FILE de los formularios:
Modificamos el create.blade.php:
<form action="{{url('cliente')}}" method="post" enctype="multipart/form-data">
    {{ csrf_field() }}
    @include("cliente/listErrores")

    Nombre: <input type="text" name="nombre" value="{{old('nombre')}}"><br>
    Apellidos: <input type="text" name="apellidos" value="{{old('apellidos')}}"><br>
    Foto: <input type="file" name="urlFoto">
    <br><br>

    <input type="submit">
</form>

En ClienteController:
use Illuminate\Support\Facades\Storage;
public function store(Request $request)
    {
        $this->validate($request, [
            'nombre' => ['required', 'max:10'],
            'apellidos' => ['required', 'max:20'],
        ]);
        $item = new Cliente;
        $img = $request->file('urlFoto');
        $ruta_fich = time()."_".$img->getClientOriginalName();
        Storage::disk('imgClientes')->put($ruta_fich, file_get_contents($img->getRealPath()));

        $arr = $request->all();
        $arr["urlFoto"] = $ruta_fich;
        $item->create($arr);
        return redirect('cliente/show');
    }

En config/filesystems.php añadimos:
'disks' => [
        'imgClientes' => [
            'driver' => 'local',
            'root' => public_path('imgClientes'),
        ],

En el modelo de Cliente modificamos:
class Cliente extends Model
{
    protected $fillable = ["nombre", "apellidos", "urlFoto"];
}

También creamos ese nuevo campo de urlFoto en la BD

Para poder ver luego la imagen en la vista:
<img src="{{ asset('imgClientes') }}/{{ $item->urlFoto }}">

No hay comentarios:

Publicar un comentario