produits 'simples'

This commit is contained in:
Olivier Legat 2021-05-03 17:21:03 +02:00
parent ccf6eb7edd
commit d80d20c77a
7 changed files with 48 additions and 37 deletions

View file

@ -38,12 +38,14 @@ class ProductsController extends Controller
//ici récupération des infos additionnelles pour affichage dans la liste
// @todo : parametrer l'occurence de ces affichages car ça n'aura aucun sens selon le type de produit
foreach ($products as &$product) {
$product->additionnalProductInfo = $product->additionnalProductInfo($product->product_type);
if ($product->additionnalProductInfo === null) {
//n'existe pas on renseigne un vide
$product_type = $product->product_type;
$modelClass = 'App\Models\\' . ucfirst($product_type);
$product->$product_type = new $modelClass();
if(!empty($product->product_type)) {
$product->additionnalProductInfo = $product->additionnalProductInfo($product->product_type);
if ($product->additionnalProductInfo === null) {
//n'existe pas on renseigne un vide
$product_type = $product->product_type;
$modelClass = 'App\Models\\' . ucfirst($product_type);
$product->$product_type = new $modelClass();
}
}
}
unset($product);
@ -53,15 +55,17 @@ class ProductsController extends Controller
/**
* create à product
*/
public function create(Request $request, $product_type)
public function create(Request $request, $product_type = null)
{
if (!array_key_exists($product_type, config('theme.enum_product_types'))) {
if (!empty($product_type) && !array_key_exists($product_type, config('theme.enum_product_types'))) {
abort(404, "Cette page n'existe pas.");
//return redirect()->route('bo.products.index');
}
$modelClass = 'App\Models\\' . ucfirst($product_type);
$product = new Product();
$product->$product_type = new $modelClass();
if(!empty($product_type)) {
$product->$product_type = new $modelClass();
}
$ranges = Range::all();
$taxes = TaxRate::all();
return view('bo.products.create', compact('product_type', 'product', 'ranges', 'taxes'));
@ -180,15 +184,17 @@ class ProductsController extends Controller
public function edit($id)
{
$product = Product::findOrFail($id);
$product->additionnalProductInfo = $product->additionnalProductInfo($product->product_type);
//above lines equivalent to :
//$product = Product::with('additionnalProductInfo')->findOrFail($id);
if(!empty($product->product_type)) {
$product->additionnalProductInfo = $product->additionnalProductInfo($product->product_type);
//above lines equivalent to :
//$product = Product::with('additionnalProductInfo')->findOrFail($id);
if ($product->additionnalProductInfo === null) {
//n'existe pas on renseigne un vide
$product_type = $product->product_type;
$modelClass = 'App\Models\\' . ucfirst($product_type);
$product->$product_type = new $modelClass();
if ($product->additionnalProductInfo === null) {
//n'existe pas on renseigne un vide
$product_type = $product->product_type;
$modelClass = 'App\Models\\' . ucfirst($product_type);
$product->$product_type = new $modelClass();
}
}
$ranges = Range::all();

View file

@ -15,7 +15,7 @@ class TagsSeeder extends Seeder
*/
public function run()
{
$canard = new Tag();
/*$canard = new Tag();
$canard->label = "Canard";
$canard->slug = Str::slug($canard->label);
$canard->save();
@ -53,6 +53,6 @@ class TagsSeeder extends Seeder
$paniers = new Tag();
$paniers->label = "Paniers garnis";
$paniers->slug = Str::slug($paniers->label);
$paniers->save();
$paniers->save();*/
}
}

20
public/b-o/js/app.js vendored
View file

@ -69281,10 +69281,10 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ "./resources/views/front/canard/sass/app.scss":
/*!****************************************************!*\
!*** ./resources/views/front/canard/sass/app.scss ***!
\****************************************************/
/***/ "./resources/views/front/jeusselin/sass/app.scss":
/*!*******************************************************!*\
!*** ./resources/views/front/jeusselin/sass/app.scss ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
@ -69293,15 +69293,15 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ 0:
/*!**********************************************************************************************************!*\
!*** multi ./resources/js/app.js ./resources/sass/app.scss ./resources/views/front/canard/sass/app.scss ***!
\**********************************************************************************************************/
/*!*************************************************************************************************************!*\
!*** multi ./resources/js/app.js ./resources/sass/app.scss ./resources/views/front/jeusselin/sass/app.scss ***!
\*************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! D:\laragon\www\boutique-du-canard\resources\js\app.js */"./resources/js/app.js");
__webpack_require__(/*! D:\laragon\www\boutique-du-canard\resources\sass\app.scss */"./resources/sass/app.scss");
module.exports = __webpack_require__(/*! D:\laragon\www\boutique-du-canard\resources\views\front\canard\sass\app.scss */"./resources/views/front/canard/sass/app.scss");
__webpack_require__(/*! D:\laragon\www\boutique-jeusselin\resources\js\app.js */"./resources/js/app.js");
__webpack_require__(/*! D:\laragon\www\boutique-jeusselin\resources\sass\app.scss */"./resources/sass/app.scss");
module.exports = __webpack_require__(/*! D:\laragon\www\boutique-jeusselin\resources\views\front\jeusselin\sass\app.scss */"./resources/views/front/jeusselin/sass/app.scss");
/***/ })

View file

@ -1,6 +1,6 @@
{
"/b-o/js/app.js": "/b-o/js/app.js",
"/b-o/css/app.css": "/b-o/css/app.css",
"/canard/css/app.css": "/canard/css/app.css",
"/canard/js/app.js": "/canard/js/app.js"
"/jeusselin/css/app.css": "/jeusselin/css/app.css",
"/jeusselin/js/app.js": "/jeusselin/js/app.js"
}

View file

@ -105,7 +105,9 @@
Publié ?
</label>
</div>
@include('bo.products.' . Str::snake($product_type))
@if(!empty($product_type))
@include('bo.products.' . Str::snake($product_type))
@endif
</form>
@endsection

View file

@ -178,7 +178,9 @@
Publié ?
</label>
</div>
@include('bo.products.' . Str::snake($product->product_type))
@if(!empty($product_type))
@include('bo.products.' . Str::snake($product->product_type))
@endif
</form>
@endsection

View file

@ -90,10 +90,11 @@ Route::namespace('App\Http\Controllers\Bo')
//route ajoutée avant la déclaration de route resource sinon la forme /products/{product} l'emporte lors du routage
Route::get('/products/starred', [\App\Http\Controllers\Bo\ProductsController::class, 'starred'])
->name('products.starred');
Route::resource('products', '\App\Http\Controllers\Bo\ProductsController')->except([
'create'
]);
Route::get('/products/create/{product_type}', [\App\Http\Controllers\Bo\ProductsController::class, 'create'])
// Route::resource('products', '\App\Http\Controllers\Bo\ProductsController')->except([
// 'create'
// ]);
Route::resource('products', '\App\Http\Controllers\Bo\ProductsController');
Route::get('/products/create/{product_type?}', [\App\Http\Controllers\Bo\ProductsController::class, 'create'])
->name('products.create');
Route::resources([