Kako se dodaje subpage u framework CodeIgniter

Radio sam zasebno jednu podstranicu i sad je treba klijentu i ugraditi. Mislio sam da će to biti jednostavnije, ali sam malo zbunjen sa strukturom file-ova koju sam sreo. A radi se o sljedećem frameworku: http://ellislab.com/codeigniter

…ako itko pozna taj framework, zamolio bih ga da mi da upute kako da ugradim podstranicu. Obični .html (ili .php) file, koji inkluda jedan .css i jedan .js file

Sljedeće pitanje je, koji bi framework preporučili za rad…koji se isplati proučiti? Ovaj možda? :smiley:

Ako te ja dobro razumem, ti hoces da dodas jos jednu stranicu na postojecu strukturu? Ne znam gde se nalazi folder sa CSS i JS fajlovima, trebalo bi u root folderu da ima folder assets sve zavisi kako ko praktikuje.

E sad udji u application/views i tu ubaci svoju html ili php stranicu, i onda idi u application/controllers i udji u glavni controller, i napravi novu funkciju za prikaz te tvoje stranice, prethodno linkuj CSS i JS pomocu funkcije base_url(), posto ces se pogubiti ako pokusas sa …/…/

Probaj prvo sa codeigniterom najlaksi je za nauciti, da bi shvatio MVC logiku, a posle ce ti biti lakse da naucis Zend, Yii ili sta vec…

Views koristiš za ‘frontend’ stranice, controllers za ‘backend’ stranice kao i models ( u models radiš konekcije na bazu itd ) - tako ti otp ide cijela logika.
Ja sam radio u njemu cca. godinu dana i trebalo mi je malo vremena da sjedne logika MVC-a na svoje jer ju nisam koristio do tada ali sve u svemu - nimalo loš MVC framework.

Codeigniter je odlican za pocetak. Lak je za ucenje, lagan je, tako da ne opterecuje aplikaciju gomilom bespotrebnog koda i brz je.

Controlles folder sadrzi kontrolere koji posredtvom modelsa proziva bazu (ukoliko je potrebno), priprema podatke za stranicu i na kraju ucitava view, koji je u sustini template za prikaz stranice.

Dobro si me razumio, i razumijem i ja otprilike tebe, ali ipak malo štekam.
Možeš li molim te dodatno pojasniti ovaj dio > application/controllers i udji u glavni controller

Sljedeći kod nalazim tamo pod index.php fileom, i nije mi baš jasan. Jesam li uopće na pravom mjestu.?

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
* Controller for index
*
* @package application\controllers
*/
class Index extends MY_Controller {
	function __construct(){
		parent::__construct();
	}
	
	public function index()
	{
		$data['conversions'] = $this->Model_conversion->get_all();
		
		$this->load->view('index', $data);
	}
	public function about()
	{
		$this->load->view('main/about');
	}
	public function tos()
	{
		$this->load->view('main/tos');
	}
	public function contact()
	{
		$this->load->view('main/contact');
	}
	public function for_webmasters()
	{
		$this->load->view('main/for_webmasters');
	}
}

/* End of file index.php */
/* Location: ./application/controllers/index.php */

Hvala svima na pomoći!

Jesi na pravom si mestu. Recimo da se tvoj fajl zove bozoou.php, stavi ga application/views, i onda dodaj funkciju u ovom Index controlleru.

public function bozouu()
	{
		$this->load->view('bozouu');
	}

I onda pristupi stranici www.domen.com/bozouu

A prethodono stavi svoje CSS i JS fajlove gde treba, ja ti kazem da je praksa da se stavljaju u root delu, u neki folder na primer assets, i linkuj ih u svom bozoou.php fajli ovako:

<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/style.css" />

Ako ti ne ide i dalje, posalji mi na pm sve pa cu ti odraditi.

Super, sad je taj dio jasan!

Nego što se tiče .js i .css, vidim gdje to inkluda, samo mi nije jasno sljedeće. Njemu neki subpage izgleda ovako:

<?php $this->load->view('parts/header'); ?>
<div>
     content
</div>
<?php $this->load->view('parts/footer'); ?>

Malo mi je nelogično da u headeru odrađuje i inkludanje JS-a i CSS-a, a i Layout headera. To po meni ne ide baš skupa…
Sad ja nemogu ubaciti tamo svoj .js za koji želim da se učita samo kad se posjeti moja podstranica. Tj. vjerovatno mogu, ali moram neku logiku napisati. Kako najjednostavnije znati o kojoj stranici se radi da mogu postaviti taj uvjet? On uvijek učitava sve…, osim što to nije pametno, ja imam i onload funkcije u .js-u.

Pa ti napravi posebno svoj header i footer, i ubaci sve u bozoou.php ne mora da bude razdvojeno, ako te dobro razumem.

Hmm…ma ovo sa js i css-om mogu i kasnije, kad proradi ovo prvo. Samo mi se sad čine prilično jednostavne tvoje upute, ali neće proraditi :confused:
Uglavnom, javio se klient, inače kolega s foruma…pa kaže da će on nastaviti dalje. Veliko hvala na ponudi da ti odradiš sve, al mi nekako nije drago slati tuđe file-ove, pogotovo kad može pročitati prepisku, hehe :smile:

Nego, ovo što se tiče inkludanja.
Njemu header započinje sa <!DOCTYPE HTML>

…pa onda ide redom inkludanje fileova, .css i .js-a, zatim otvara body i završava na nekom tamo div-u.

Gdje bi se ja tu ubacio sa svojim inkludanjem file-ova u svojoj podstranici bozoou.php koja izgleda:

<?php $this->load->view('parts/header'); ?>
<div>
     content
</div>
<?php $this->load->view('parts/footer'); ?>

Eventualno nisam siguran jel mogu nakon footera, ali koliko sam čuo…ispravna praksa je inkludati sve prije body taga.

ti ne moras uopste da koristis njegov header i footer, samo napravis svoj fajl bozoou.php sa svim fajlovima potrebnim i struktura ti bude bez ovog njegovog:

<?php $this->load->view('parts/header'); ?>

<?php $this->load->view('parts/header'); ?>

To sto ti ne radi je mozda zbog mog lapsusa u funkciji (ako si stvarno stavio ime bozoou.php :slight_smile: )

public function bozoou()
	{
		$this->load->view('bozoou');
	}

A mozda si i stavio svoj pogled u views/main, ne znam ovako napamet gde si pogresio.

Ma pogledao sam tri puta da nisam fulao koje slovo, ili pogriješio path, ali nisam. I nisam stavio “bozoou.php”, hehe

A ovo što se tiče header-a, ipak je potrebno da na mojoj podstranici ostanu njegovi header i footer.

Slusaj prekopiraj njegov header na vrh svog fajla i izmeni sta treba da izmenis i samo sacuvaj i onda struktura tvog fajla bude:

<html>
<head>blabla</head>
<body>
<?php $this->load->view('parts/footer'); ?>

A druga opcija ti je da otvoris header njegov i dodas svoje fajlove, al onda ce se na svakoj stranici ucitavati tvoji css i js fajlovi sto ce usporiti stranicu, i struktura ti bude ovakva:

<?php $this->load->view('parts/header'); ?>
<div>blabla</div>
<?php $this->load->view('parts/footer'); ?>

Pa ako sam te dobro shvatio, onda ovo prvo ne valja iz razloga što naraušava bit MVC-a. Ako on kasnije bude radio nešto na headeru, promjene se neće odraziti na moju podstranicu.

Kod ove druge opcije je moguće php-u ugraditi logiku da ne ispiše linije za inludanje fileova kad je neka druga stranica pozvana, a ne moja. To mi se čini ocke rješenje…samo velim, nisam siguran koja varijabla nosi podatak o imenu stranice.
A nisam se mogao baš lokalno igrati, jer niš nije radilo zbog nedostatka baze. Iskopirao sam i bazu…ali i dalje nije radilo… Tako da sam morao na pamet pogađat iz koda što se gdje dešava…nisam mogao neka mala testiranja probat pa vidjet kako izgledaju varijable u određenom koraku…

Najpametnije onda dodaj svoje fajlove u njegov header i resen problem, al ako bas imas puno fajlova i neces da usporis stranicu, pogiraj se sa URL helperom, probaj ovako nesto, nagadjam sad:

$str  = str_replace('', '/', uri_string());
if ($str == "bozoou") {
?>
   <link rel="stylesheet" href="">
<?php } else { ?>
    <link rel="stylesheet" href="">

  <?php } ?>

Ma to je sekundarni problem…primarno je što nisam mogao nikako vidjeti svoju podstranicu.
Nego…ovaj dio kao da si preskočio :smile:

Čut ćemo gdje je bila greška. :smile:

Vazi, uzivaj :wink:

falilo do 20 znakova? :smile:

Hvala još jednom :wink:

uvek fali …:slight_smile:

Evo samo da još dodam što je falilo…znaci trebalo je još dodati u routes.php
$route[‘bozoou’] = “index/bozoou”;