Welcome Guest, Not a member yet? Register   Sign In
Best structure for my "Online Shop"
#1

Hey,

I want to create a simple online shop with CodeIgniter 4,
I created a "base" Controller called "Pages.php" and I created a "renderProducts" Method for rendering the "Product Page" and I created a "fallback" Method for every page that doesnt have a special method ("renderOther")

Code:
<?php

namespace App\Controllers;

use CodeIgniter\Controller;


class Pages extends Controller{

    public function index()
    {

        $this->renderOther("home");

    }

    public function renderProducts($id){

        helper("server");
        helper("currency");


        if(!ServerEntryExists($id)){

            throw new \CodeIgniter\Exceptions\PageNotFoundException();

        }else{




            $this->server_model = new \Server_model();
            $data["theme"] = "sms_default/bootstrap.css";
            $data["servers"] = $this->server_model->get_servers();

            $this->product_model = new \Product_model();
            $data['products'] = $this->product_model->get_products_for_server($id);

            $data["serverstring"] = convertServerIDToString($id);

            echo view('templates/header', $data);
            echo view('pages/products', $data);
            echo view('templates/footer', $data);

        }

    }


    public function renderOther($page = "home")
    {


        helper("server");
        helper("currency");

            # Render everything else
        if(!is_file(APPPATH."/Views/pages/".$page.".php")){
            throw new \CodeIgniter\Exceptions\PageNotFoundException($page);
        }


        $this->server_model = new \Server_model();

        $data['title'] = ucfirst($page); // Capitalize the first letter
        $data["theme"] = "sms_default/bootstrap.css";
        $data["servers"] = $this->server_model->get_servers();


        if($page == "home"){
            $this->product_model = new \Product_model();
            $data['products'] = $this->product_model->get_products();
            //$data['products_entry'] = $this->product_model->get_products($id);
        }




        echo view('templates/header', $data);
        echo view('pages/'.$page, $data);
        echo view('templates/footer', $data);


    }


}



I'm routing my requests via "Routes.php"

PHP Code:
/**
 * --------------------------------------------------------------------
 * Route Definitions
 * --------------------------------------------------------------------
 */

// We get a performance increase by specifying the default
// route since we don't have to scan directories.

$routes->get('products/(:segment)''Pages::renderProducts/$1');
$routes->match(['get''post'], 'admin/createProduct''Products::create');
$routes->get('/''Pages::index');
$routes->get('(:any)''Pages::renderOther/$1');

/**
 * --------------------------------------------------------- 


Is there a better way to do this?


Regards
Reply


Messages In This Thread
Best structure for my "Online Shop" - by burningscript - 02-01-2020, 03:45 PM



Theme © iAndrew 2016 - Forum software by © MyBB