Commit 7785f769 by Pancholin

subcategorias para los productos

parent 233317de
......@@ -7,6 +7,7 @@ use App\Http\Requests;
use App\Http\Controllers\Controller;
use Yajra\Datatables\Datatables;
use Onestartup\Product\Model\ProductCategory as Category;
use Onestartup\Product\Model\ProductSubCategory as SubCategory;
use Onestartup\Product\Model\ProductImage as Gallery;
use Onestartup\Product\Model\Product;
use Onestartup\Product\Model\Variable as Variable;
......@@ -29,9 +30,11 @@ class AdminProductController extends Controller
{
$categories = Category::pluck('name', 'id');
$variable = Variable::first();
$subcategories = [];
return view('product::product.create')
->with('categories', $categories)
->with('subcategories', $subcategories)
->with('variable', $variable);
}
......@@ -44,19 +47,19 @@ class AdminProductController extends Controller
{
$product = new Product($request->all());
\Auth::user()->products()->save($product);
if (isset($request->cover)) {
$file = $request->file('cover');
$nombre = $file->getClientOriginalName();
$nombre_file = str_replace(' ', '_', $nombre);
$ubicacion_donde_guarda ='products/cover/'.$nombre_file;
$ubicacion_donde_guarda ='products/cover/'.$product->id."/".$nombre_file;
\Storage::disk('local')->put($ubicacion_donde_guarda, \File::get($file));
$product->cover = $ubicacion_donde_guarda;
$product->save();
}
\Auth::user()->products()->save($product);
return redirect()
......@@ -72,10 +75,12 @@ class AdminProductController extends Controller
{
$product = Product::find($id);
$categories = Category::pluck('name', 'id');
$subcategories = SubCategory::where("category_id", $product->category_id)->pluck('name', 'id');
$variable = Variable::first();
return view('product::product.edit')
->with('categories', $categories)
->with('subcategories', $subcategories)
->with('product', $product)
->with('variable', $variable);
}
......@@ -89,20 +94,20 @@ class AdminProductController extends Controller
{
$product = Product::find($id);
$product->fill($request->all());
$product->save();
if (isset($request->cover)) {
$file = $request->file('cover');
$nombre = $file->getClientOriginalName();
$nombre_file = str_replace(' ', '_', $nombre);
$ubicacion_donde_guarda ='products/cover/'.$nombre_file;
$ubicacion_donde_guarda ='products/cover/'.$product->id."/".$nombre_file;
\Storage::disk('local')->put($ubicacion_donde_guarda, \File::get($file));
$product->cover = $ubicacion_donde_guarda;
$product->save();
}
$product->save();
return redirect()
->back()
->with('message_info', 'Información actualizada correctamente');
......
......@@ -9,8 +9,8 @@ use Yajra\Datatables\Datatables;
use Onestartup\Product\Model\ProductCategory as Category;
use Onestartup\Product\Requests\RequestCreateCategory;
use Onestartup\Product\Requests\RequestEditCategory;
use Onestartup\Product\Requests\RequestCategory;
class CategoryController extends Controller
{
/**
......@@ -30,7 +30,7 @@ class CategoryController extends Controller
* @param Request $request
* @return Response
*/
public function store(RequestCreateCategory $request)
public function store(RequestCategory $request)
{
$category = new Category($request->all());
......@@ -69,7 +69,7 @@ class CategoryController extends Controller
* @param Request $request
* @return Response
*/
public function update(RequestEditCategory $request, $id)
public function update(RequestCategory $request, $id)
{
$category = Category::find($id);
$category->fill($request->all());
......
......@@ -8,6 +8,7 @@ use App\Http\Controllers\Controller;
use Yajra\Datatables\Datatables;
use Onestartup\Product\Model\Product;
use Onestartup\Product\Model\ProductCategory as Category;
use Onestartup\Product\Model\ProductSubCategory as SubCategory;
class ProductController extends Controller
{
......@@ -71,5 +72,25 @@ class ProductController extends Controller
->with('products', $products);
}
public function bySubCategory($category_slug, $subcategory_slug)
{
//return $category_slug . " " .$subcategory_slug;
$category = Category::where('slug', $category_slug)->first();
$subcategory = $category->subcategories->where('slug', $subcategory_slug)->first();
$products = $subcategory->products()->where('active', true)->paginate(15);
$otros = Product::where('active', true)->inRandomOrder()->take(3)->get();
$categories = Category::where('active', true)->get();
$subcategories = $category->subcategories()->where('active' ,true)->get();
return view('product-public::subcategory')
->with('categories', $categories)
->with('subcategories', $subcategories)
->with('otros', $otros)
->with('category', $category)
->with('subcategory', $subcategory)
->with('products', $products);
}
}
<?php
namespace Onestartup\Product\Controller;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Onestartup\Product\Model\ProductCategory as Category;
use Onestartup\Product\Model\ProductSubCategory as SubCategory;
use Onestartup\Product\Requests\RequestSubCategory;
class SubCategoryController extends Controller{
public function index(Request $request, $category_id){
$category = Category::find($category_id);
if($request->ajax()){
return $subcategories = $category->subcategories()->get();
}
$subcategories = $category->subcategories()->paginate(30);
return view("product::subcategory.index")
->with("subcategories", $subcategories)
->with("category", $category);
}
public function edit($category_id, $id){
$category = Category::find($category_id);
$subcategory = SubCategory::where("category_id", $category_id)->find($id);
return view("product::subcategory.edit")
->with("subcategory", $subcategory)
->with("category", $category);
}
public function store(RequestSubCategory $request, $category_id){
$subcategory = new SubCategory($request->all());
$subcategory->category_id = $category_id;
$subcategory->save();
if (isset($request->portada)) {
$file = $request->file('portada');
$nombre = $file->getClientOriginalName();
$nombre_file = str_replace(' ', '_', $nombre);
$ubicacion_donde_guarda ='product/subcategories/' . $subcategory->id . '/' .$nombre_file;
\Storage::disk('local')->put($ubicacion_donde_guarda, \File::get($file));
$subcategory->cover = $ubicacion_donde_guarda;
$subcategory->save();
}
return redirect()
->back()
->with('message_success', 'Subcategoría añadida correctamente.');
}
public function update(RequestSubCategory $request, $category_id, $id){
$subcategory = SubCategory::where("category_id", $category_id)->find($id);
$subcategory->fill($request->all());
$subcategory->save();
if (isset($request->portada) && $request->portada != null ) {
$file = $request->file('portada');
$nombre = $file->getClientOriginalName();
$nombre_file = str_replace(' ', '_', $nombre);
$ubicacion_donde_guarda ='product/subcategories/'. $subcategory->id . '/'. $nombre_file;
\Storage::disk('local')->put($ubicacion_donde_guarda, \File::get($file));
$subcategory->cover = $ubicacion_donde_guarda;
$subcategory->save();
}
return redirect()
->back()
->with('message_success', 'Subcategoría actualizada correctamente.');
}
public function destroy($category_id, $id){
$subcategory = SubCategory::where("category_id", $category_id)->find($id);
$subcategory->delete();
return redirect()
->back()
->with('message_danger', 'Subcategoría eliminada correctamente.');
}
public function deleteCover($id)
{
$category = SubCategory::find($id);
$category->cover = null;
$category->save();
return redirect()
->back()
->with('message_success', 'Imagen eliminada correctamente.');
}
}
\ No newline at end of file
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateProductSubcategoriesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('product_subcategories', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 355);
$table->string('description', 455)->nullable();
$table->string('cover', 455)->nullable();
$table->boolean('active')->default(true);
$table->string('slug')->nullable();
$table->integer('category_id')->unsigned();
$table->foreign('category_id')
->references('id')
->on('product_categories')
->onDelete('cascade');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('product_subcategories');
}
}
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddSubcategoryToProductsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('products', function($table) {
$table->integer('subcategory_id')->unsigned()->nullable();
$table->foreign('subcategory_id')->references('id')->on('product_subcategories')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('products', function($table) {
$table->dropColumn('subcategory_id');
});
}
}
......@@ -16,6 +16,7 @@ class Product extends Model
'active',
'publication_date',
'category_id',
'subcategory_id',
'cover',
'extra1',
'extra2',
......@@ -37,6 +38,11 @@ class Product extends Model
return $this->belongsTo('Onestartup\Product\Model\ProductCategory', 'category_id');
}
public function subcategory()
{
return $this->belongsTo('Onestartup\Product\Model\ProductSubCategory', 'subcategory_id');
}
public function user()
{
return $this->belongsTo('App\User', 'user_id');
......
......@@ -19,4 +19,8 @@ class ProductCategory extends Model
{
return $this->hasMany('Onestartup\Product\Model\Product', 'category_id');
}
public function subcategories(){
return $this->hasMany('Onestartup\Product\Model\ProductSubCategory', 'category_id');
}
}
<?php
namespace Onestartup\Product\Model;
use Illuminate\Database\Eloquent\Model;
class ProductSubCategory extends Model
{
protected $table = 'product_subcategories';
protected $fillable = [
'name',
'description',
'cover',
'active',
'slug',
'category_id'
];
public function category()
{
return $this->belongsTo('Onestartup\Product\Model\ProductCategory', 'category_id');
}
public function products(){
return $this->hasMany('Onestartup\Product\Model\Product', 'subcategory_id');
}
}
......@@ -4,7 +4,7 @@ namespace Onestartup\Product\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RequestCreateCategory extends FormRequest
class RequestCategory extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
......@@ -27,7 +27,7 @@ class RequestCreateCategory extends FormRequest
'name' => 'required|max:355',
'slug' => 'required|max:255',
'description'=> 'max:455',
'active' => 'required'
'active' => 'required|boolean'
];
}
}
\ No newline at end of file
......@@ -4,7 +4,7 @@ namespace Onestartup\Product\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RequestEditCategory extends FormRequest
class RequestSubCategory extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
......@@ -27,7 +27,7 @@ class RequestEditCategory extends FormRequest
'name' => 'required|max:355',
'slug' => 'required|max:255',
'description'=> 'max:455',
'active' => 'required'
'active' => 'required|boolean',
];
}
}
\ No newline at end of file
......@@ -2,10 +2,20 @@
Route::group(['middleware' => ['web', 'auth', 'is_admin']], function(){
Route::resource('admin/product/product', 'Onestartup\Product\Controller\AdminProductController', ['as'=>'admin']);
Route::resource('admin/product/category', 'Onestartup\Product\Controller\CategoryController', ['as'=>'admin.product']);
Route::resource('admin/product/product', 'Onestartup\Product\Controller\AdminProductController', ['as'=>'admin', 'except'=>['show']]);
Route::resource('admin/product/category', 'Onestartup\Product\Controller\CategoryController', ['as'=>'admin.product', 'except' => ['show', 'create']]);
Route::delete('delete/cover/category/product/{id}', 'Onestartup\Product\Controller\CategoryController@deleteCover')
->name('delete.cover.category.product');
Route::resource('admin/product/category/{category_id}/subcategory', 'Onestartup\Product\Controller\SubCategoryController', ['as'=>'admin.product', 'except' => ['show', 'create']]);
//Route::post("api/admin/product/category/{category_id}/subcategory", )
Route::delete('delete/cover/subcategory/product/{id}', 'Onestartup\Product\Controller\SubCategoryController@deleteCover')
->name('delete.cover.subcategory.product');
Route::get('admin/products/datatable', 'Onestartup\Product\Controller\AdminProductController@getProducts')
->name('datatable.products');
Route::post('admin/product/{id}/gallery', 'Onestartup\Product\Controller\AdminProductController@storeGallery')
......@@ -26,8 +36,14 @@ Route::group(['middleware' => ['web', 'auth', 'is_admin']], function(){
Route::group(['middleware' => ['web']], function(){
Route::get(env('SLUG_PRODUCTS').'/{slug}', 'Onestartup\Product\Controller\ProductController@show')->name('show.product');
Route::get(env('SLUG_PRODUCTS'), 'Onestartup\Product\Controller\ProductController@index')->name('main.product');
Route::get(env('SLUG_PRODUCTS_CATEGORY').'/{slug_category}',
'Onestartup\Product\Controller\ProductController@byCategory')
->name('category.product');
Route::get(env('SLUG_PRODUCTS_CATEGORY').'/{slug_category}/{slug_subcategory}',
'Onestartup\Product\Controller\ProductController@bySubCategory')
->name('subcategory.product');
});
......@@ -58,6 +58,7 @@
<th>Categoría</th>
<th>Descripción</th>
<th>Productos</th>
<th>Subcategorias</th>
<th></th>
</tr>
@foreach ($categories as $category)
......@@ -71,8 +72,13 @@
</p>
</td>
<td> {{$category->description}}</td>
<td> {{$category->products->count()}}</td>
<td class="text-center"> {{$category->products->count()}}</td>
<td class="text-center"> {{$category->subcategories->count()}}</td>
<td class="text-center">
<a class='btn btn-xs btn-success button-mb' href="{{route('admin.product.subcategory.index', $category->id)}}">
<i class='fas fa-plus icon-special-size'></i>
Subcategorías
</a>
{!! Form::open(['route'=> ['admin.product.category.destroy',$category->id],'method'=>'DELETE'])!!}
<button class='btn btn-danger btn-xs button-mb' onclick="return confirm('¿Estás seguro de eliminar este elemento?');" type='submit'>
<i class='fas fa-trash-alt icon-special-size'></i>
......@@ -90,7 +96,8 @@
</div>
</div>
<div class='dker p-a text-right'>
{{ $categories->links() }}
{!! $categories->links() !!}
</div>
</div>
</div>
......
......@@ -52,6 +52,46 @@
dateFormat: "yy-mm-dd"
});
</script>
<script>
$(document).ready(function() {
var category = $("#category_id").val();
$.ajax({
type: "GET",
url: "/admin/product/category/" + category + "/subcategory",
success: function(data)
{
$("#subcategory_id").html("");
$("#subcategory_id").append('<option value="" selected disabled>Selecciona una subcategoría</option>');
$.each( data, function( key, value ) {
$("#subcategory_id").append('<option value=' + value.id + '>' + value.name + '</option>');
});
},
error: function(data){
console.log("error");
}
});
});
$("#category_id").change(function() {
var category = $("#category_id").val();
$.ajax({
type: "GET",
url: "/admin/product/category/" + category + "/subcategory",
success: function(data)
{
$("#subcategory_id").html("");
$("#subcategory_id").append('<option value="" selected disabled>Selecciona una subcategoría</option>');
$.each( data, function( key, value ) {
$("#subcategory_id").append('<option value=' + value.id + '>' + value.name + '</option>');
});
},
error: function(data){
console.log("error");
}
});
});
</script>
@if($variable != null)
@if($variable->alias11 != null)
......
......@@ -180,5 +180,24 @@
};
</script>
<script>
$("#category_id").change(function() {
var category = $("#category_id").val();
$.ajax({
type: "GET",
url: "/admin/product/category/" + category + "/subcategory",
success: function(data)
{
$("#subcategory_id").html("");
$.each( data, function( key, value ) {
$("#subcategory_id").append('<option value=' + value.id + '>' + value.name + '</option>');
});
},
error: function(data){
console.log("error");
}
});
});
</script>
@endsection
......@@ -33,6 +33,22 @@
<div class="row">
<div class="col-md-6">
<div class="form-group">
{!! Form::label('publication_date', 'Fecha de publicación', ['class'=>'control-label'])!!}
{!! Form::text('publication_date', null, ["class"=>"form-control", "required"=>"required", "id"=>"publication_date"]) !!}
</div>
</div>
<div class="col-md-6">
<div class="form-group" >
{!! Form::label('subcategory_id', 'Subcategoría', ['class'=>'control-label'])!!}
{!! Form::select('subcategory_id', $subcategories, null, ["class"=>"form-control", "placeholder"=>"Selecciona una subcategoría"]) !!}
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
{!! Form::label('cover', 'Portada', ['class'=>'control-label'])!!}
@if (isset($product))
<span>
......@@ -47,13 +63,6 @@
</div>
</div>
<div class="col-md-6">
<div class="form-group">
{!! Form::label('publication_date', 'Fecha de publicación', ['class'=>'control-label'])!!}
{!! Form::text('publication_date', null, ["class"=>"form-control", "required"=>"required", "id"=>"publication_date"]) !!}
</div>
</div>
</div>
<div class="row">
......
@extends('product-public::layout')
@section('content')
Listado de entradas
<p>
Categoria local:
{{$category}}
</p>
<p>
Subcategoria local
{{$subcategory}}
</p>
<p>
Categorias:
{{$categories}}
</p>
<p>
Subcategorias:
{{$categories}}
</p>
<p>
Productos todas
@foreach($products as $product)
{{product}}
@endforeach
</p>
<p>
Productos al azar
{{$otros}}
</p>
<p>
Paginacion:
{!! $products->links() !!}
</p>
@endsection
\ No newline at end of file
@extends('crm-admin::main-layout')
@section('breadcrumb')
<li class="breadcrumb-item">
<a href="{{route('home')}}">Home</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin.product.index')}}">Productos</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin.product.category.index')}}">Categorías</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin.product.category.index')}}"> {{$category->name}}</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin.product.subcategory.index', $category->id)}}"> Subcategorías de {{$category->name}}</a>
</li>
<li class="breadcrumb-item active">
Subcategoria: {{$subcategory->name}}
</li>
@endsection
@section('content')
<div class='row'>
<div class='col-md-12'>
<div class='box'>
<div class='box-header dark'>
<h2>Actualizar información</h2>
</div>
<div class='box-body'>
<div class='col-md-12'>
{!! Form::model($subcategory,['route'=> ['admin.product.subcategory.update',$category->id, $subcategory->id],"method"=>"PUT", 'enctype'=>'multipart/form-data']) !!}
@include('product::subcategory.fields')
</div>
</div>
<div class='dker p-a text-right'>
<div class='col-md-12'>
<a class='btn danger' href="{{route('admin.product.subcategory.index', $category->id)}}">Cancelar</a>
{!! Form::submit('Actualizar información', ['class'=>'btn dark']) !!}
{!! Form::close() !!}
</div>
</div>
</div>
</div>
</div>
<!-- .modal nuevo contrato -->
<div class='modal fade' data-backdrop='true' id='ver'>
<div class='modal-dialog modal-lg'>
<div class='modal-content box-shadow-z3'>
<div class='modal-body text-center p-lg'>
@if ($subcategory->cover == null)
<h4> No hay imagen asignada</h4>
@else
<img class='image-modal-preview' src="{{asset('storage/'.$subcategory->cover)}}">
@endif
</div>
<div class='modal-footer'>
<button class='btn dark p-x-md' data-dismiss='modal' type='button'>Cerrar</button>
@if($subcategory->cover != null)
{!! Form::open(['route'=> ['delete.cover.subcategory.product', $subcategory->id ],'method'=>'DELETE'])!!}
<button class='btn btn-danger button-mb' onclick="return confirm('¿Estás seguro de eliminar este elemento?');" type='submit'>
<i class='fas fa-trash-alt icon-special-size'>
Eliminar
</i>
</button>
{!! Form::close()!!}
@endif
</div>
</div>
<!-- /.modal-content -->
</div>
</div>
@endsection
<div class="form-group">
{!! Form::label('name', 'Nombre *') !!}
{!! Form::text('name', null, ["class"=>"form-control", "required"=>"required", "placeholder"=>"Coloque aquí el nombre de la categoría", "id"=>"first"]) !!}
</div>
<div class="form-group">
{!! Form::label('slug', 'URL Slug *') !!}
{!! Form::text('slug', null, ["class"=>"form-control", "required"=>"required", "placeholder"=>"Coloque aquí la liga o URL de la categoría", "id"=>"second"]) !!}
</div>
<div class="form-group">
{!! Form::label('description', 'Resumen') !!}
{!! Form::text('description', null, ["class"=>"form-control", "placeholder"=>"Coloque la información descriptiva de la categoría"]) !!}
</div>
<div class="form-group">
{!! Form::label('active', 'Estado') !!}
{!! Form::select('active', [true=>'Activo', false=>'Inactivo'], null, ["class"=>"form-control", "required"=>"required"]) !!}
</div>
<div class="form-group">
{!! Form::label('portada', 'Imagén de portada') !!}
@if (isset($category))
<span>
<a class="btn btn-xs accent" data-target="#ver" data-toggle="modal" href="#" ui-toggle-class="fade-up-big">
Ver actual
<i class="fa fa-eye"></i>
</a>
</span>
@endif
<br>
{!! Form::file('portada', null, ["class"=>"form-control"]) !!}
</div>
\ No newline at end of file
@extends('crm-admin::main-layout')
@section('breadcrumb')
<li class="breadcrumb-item">
<a href="{{route('home')}}">Home</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin.product.index')}}">Productos</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin.product.category.index')}}"> Categorías</a>
</li>
<li class="breadcrumb-item">
<a href="{{route('admin.product.category.index')}}"> Categoría: {{$category->name}}</a>
</li>
<li class="breadcrumb-item active">
Listado de subcategorias
</li>
@endsection
@section('content')
<div class='row'>
<div class='col-md-12 collapse' id='agregarCategoria'>
<div class='box'>
<div class='box-header dark'>
<h2>
Agregar nueva subcategoría
<span></span>
<a aria-expanded='false' class='btn btn-xs btn-danger button-ml' data-toggle='collapse' href='#agregarCategoria'>
Cancelar
</a>
</h2>
</div>
<div class='box-body'>
<div class='col-md-12'>
{!! Form::open(['route'=> ['admin.product.subcategory.store', $category->id],'method'=>'POST', 'enctype'=>'multipart/form-data']) !!}
@include('product::subcategory.fields')
<div class='form-group'>
<button class='btn btn-primary' type='submit'>
Registrar
</button>
</div>
{!! Form::close() !!}
</div>
</div>
</div>
</div>
<div class='col-md-12'>
<div class='box'>
<div class='box-header dark'>
<h2>
<b>{{$category->name}}:</b> Listado de subcategorías
<span>
<a aria-expanded='false' class='btn btn-xs btn-info button-ml' data-toggle='collapse' href='#agregarCategoria'>
<i class='fas fa-plus'></i>
Agregar Nueva Subcategoría
</a>
</span>
</h2>
</div>
<div class='box-body'>
<div class='col-md-12'>
<table class='table'>
<tr>
<th>#</th>
<th>Subcategoría</th>
<th>Descripción</th>
<th></th>
</tr>
@foreach ($subcategories as $subcategory)
<tr>
<td> {{$subcategory->id}}</td>
<td>
<p> {{$subcategory->name}}</p>
<p>
URL Slug:
<b> {{$subcategory->slug}}</b>
</p>
</td>
<td> {{$subcategory->description}}</td>
<td class="text-center">
{!! Form::open(['route'=> ['admin.product.subcategory.destroy',$category->id,$subcategory->id],'method'=>'DELETE'])!!}
<button class='btn btn-danger btn-xs button-mb' onclick="return confirm('¿Estás seguro de eliminar este elemento?');" type='submit'>
<i class='fas fa-trash-alt icon-special-size'></i>
Eliminar
</button>
{!! Form::close()!!}
<a class='btn btn-xs accent' href="{{route('admin.product.subcategory.edit', [$category->id, $subcategory->id])}}">
<i class='fas fa-edit icon-special-size'></i>
Editar
</a>
</td>
@endforeach
</tr>
</table>
</div>
</div>
<div class='dker p-a text-right'>
{{ $subcategories->links() }}
</div>
</div>
</div>
</div>
@endsection
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment