[ nepoverljiv @ 16.04.2016. 13:54 ] @
Zdravo,

Do ponedeljka moram da prepravim ceo moj projekat i da izbrisem sav php kod iz view-a. Inace projekat je radjen u codeigniter-u. Znaci uslov je sledeci, moram da koristim codeigniter, i moram da eliminisem php iz view-a.

Uspeo sam da uradim osnovno pomocu parser klase , ali ona nema opciju uslova (if, else,..). E sad gledao sam neke template engine ali nijedan nisam u stanju da instaliram, nijedan mi ne radi i nisam nasao bas nijedan tutorijal step by step (neki step mora da nedostaje ili nije dovoljno jasan).

Da li neko moze da me uputi na koju stranu da idem i sta da radim, ili da me sprovede kroz instalaciju nekog engine ili moze da mi posalje osnovni codeigniter + engine?

Bas mi je hitno, svaka pomoc dobrodosla !
[ 3way @ 16.04.2016. 13:56 ] @
Pa prebaci to u kontroler i gotovo...Ako ne znas CI...e jebga..
[ nepoverljiv @ 16.04.2016. 13:58 ] @
Ok da pebacim jednu stvar u controller i da to samo ispisem. Ali ako imam iscitavanje iz baze i u zavisnosti od kolone "active" da li je 1 ili 0 treba da prikazem razlicitu ikonicu kako to da uradim?


Code:

$query = $this->users_mod->allProducts();
        $data = array(
                  'ap_heading' => 'Product definition',
                  'ap_entries' => $query
                );
        $content = $this->parser->parse('allproducts', $data, TRUE); 
        $this->load->view('template', compact('content')); 


I sad cu da izlistam ovo sa {ap_entries}...{/ap_entries}, ali u zavisnosti od vrednosti polja {active} odredjujem ikonicu za svaki red, je l' imas neku ideju?
[ 3way @ 16.04.2016. 14:20 ] @
Na primer....U samom kontroleru proveris da li treba 1 ili 0, pa prosledis odgovarajuci URL koji vodi do odgovarajuce ikonice....A onda u view-u u IMG tagu kao src pozoves taj URL...
Neki PHP ti ne gine, svakako :)
[ nepoverljiv @ 16.04.2016. 14:26 ] @
Code:

        $query = $this->users_mod->allProducts();
        foreach($query as $row)
        {
            if($row->active == 0)
            {
                $active = "disabled";
            } else {
                $active = "enabled";
            }
        }
        $data = array(
                  'ap_heading' => 'Product definition',
                  'ap_entries' => $query,
                  'ap_active' => $active
                );
        $content = $this->parser->parse('allproducts', $data, TRUE); 
        $this->load->view('template', compact('content'));


Evo ga moj pokusaj u kontroleru ali ne radi kako treba, zapamti vrednost zadnjeg reda umesto za svaki red posebno. Moze pomoc?
[ nepoverljiv @ 16.04.2016. 14:57 ] @
Zar niko ne zna kako moze ovo u kontroleru da se odradi :(
[ Tpojka @ 16.04.2016. 15:09 ] @
Citat:
E sad gledao sam neke template engine ali nijedan nisam u stanju da instaliram, nijedan mi ne radi i nisam nasao bas nijedan tutorijal step by step (neki step mora da nedostaje ili nije dovoljno jasan).

Mozes da postavis kod ovog dijela sa error log-om. Tj. ako nisi uspio da instalises nesto, dobro bi bilo poceti rjesavanje problema odatle.
U odnosu na to, jesi li pokusao sa Smarty template-om (link artikla - artikal je stariji vise od 4 godine, pa bi trebalo obratiti paznju na upgrade-ovane verzije kako CodeIgniter-a tako i Smarty-ja.)?
[ nepoverljiv @ 16.04.2016. 15:15 ] @
Jesam i ovaj tutorijal nista ne vredi, pola stvari nije receno, ovo sto sam uradio pomocu njega naravno da ne radi.

Mislim da ako mogu ono u kontroleru da izvedem da bi mi bilo najbolje.
[ Tpojka @ 16.04.2016. 17:49 ] @
Vidim i sad da je kod koji sam nas'o vezan za CodeIgniter <=1.7.1 verziju.
Mada malo surfanja nista ne skodi. Iz prve™ sam instalis'o na novu instalaciju CI 3.0.6
i radi nepogresivo. Prvi link (sa najvise zvjezdica, update-ovan posljednji put prije dva dana) funkcionise.
[ nepoverljiv @ 16.04.2016. 17:55 ] @
Ima jos jedan uslov, moram da korisim Codeigniter2.x hahahaha.

Kad prodje derbi probacu ovo da li radi, pa cu da vidim kako radi i da li ja mogu da ga pokrenem ili sam definitivno za nesto drugo a ne programiranje.
[ Tpojka @ 16.04.2016. 18:22 ] @
Mogu jos da ti predlozim da se nosis ovim tekstom. Pomozi nam da ti pomognemo.
U artiklu je opisano na kakva pitanja je fakticki moguce odgovoriti.
[ nepoverljiv @ 16.04.2016. 19:29 ] @
Radi ali mi se nesto ne svidja :/

Da bih izlistao na primer sve iz baze moram da uradim ovako nesto

Code:

{foreach $ap_entries as $row}
        {$row->name}
{/foreach}


Ajde ovaj foreach bih nekako i progutao, ali kako da izbegnem {$row->name} i da bude samo {name}?
[ nepoverljiv @ 17.04.2016. 12:08 ] @
Ajde ovo prethodno nije ni bitno, ali je l' moze neko da mi pomogne sa sledecim problemom.

Kad sam koristio PHP i u view ovako sam cuvao vrednosti u formi da ih validacija ne izbrise ako neko polje nije popunjeno:

Code:

value="<?php echo set_value('termin'); ?>"


E kako sad to da odradim u Smarty-ju?
[ Tpojka @ 17.04.2016. 13:52 ] @
U FALSE bloku form validacije dodijeli vrijednosti custom varijablama.
Uprosceno (preko primjera iz dokumentacije) ovako

Code (php):

<?php

class Form extends CI_Controller
{
        public function index()
        {
                $this->load->helper(array('form', 'url'));

                $this->load->library('form_validation');

                $this->form_validation->set_rules('username', 'Username', 'required');
                $this->form_validation->set_rules('password', 'Password', 'required',
                        array('required' => 'You must provide a %s.')
                );
                $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
                $this->form_validation->set_rules('email', 'Email', 'required');

                if ($this->form_validation->run() == FALSE)
                {
                        $smarty->assign('username', set_value('username'));// vrijednost je validirana vrijednost ili prazan string

                        $smarty->display('myform.tpl');
                }
                else
                {
                        $smarty->display('success.tpl');
                }
        }
}
 
[ nepoverljiv @ 17.04.2016. 14:02 ] @
A je l' treba da napisem nesto u view za value?
[ Tpojka @ 17.04.2016. 14:42 ] @
Pretpostavicemo
Code (php):

{$username}
 

na mjesto
Code (php):

set_value('username');
 
[ nepoverljiv @ 17.04.2016. 14:49 ] @
Prijavljuje mi da nije definisana varijabla $smarty.

Ja inace ovako pozivam view:

Code:

     $data = array(
                  'ap_heading' => 'Add product',
                  'ap_contr' => 'product',
                  'ap_user' => $username,
                  'content' => 'product.tpl'
                );

     $this->parser->parse("template.tpl", $data);


I onda mi u template u zavisnosti od $content poziva odgovarajuci view.

Btw da li bih mogao nekako da napisem kod u .tpl, probao sam sa {php}{/php} i nece? To bi mi otklonilo sve probleme, jeste da nije ispravno i da nije ono sto mi se trazi ali moze malo gledanje kroz prste.
[ Tpojka @ 17.04.2016. 14:55 ] @
Da li je instanc Smarty klase dodijeljena $smarty varijabli.
Postuj kompletan kontroler. Nezgodno je ovako trositi vrijeme.
[ nepoverljiv @ 17.04.2016. 15:04 ] @
Sigurno nije jer nemam pojma o cemu pricas ni gde se to dodeljuje?
[ Tpojka @ 17.04.2016. 15:34 ] @
Citat:
Tpojka:Postuj kompletan kontroler. Nezgodno je ovako trositi vrijeme.

[ nepoverljiv @ 17.04.2016. 15:47 ] @
Sve sto sam uradio na Windows-u nista nece da radi na Ubuntu, cak ni da otvori stranicu
[ Tpojka @ 17.04.2016. 15:54 ] @
Cek da uzmem kristalnu kuglu, mozda ima nekog koda tamo. :)
[ Nemanja Avramović @ 17.04.2016. 18:40 ] @
Ne možeš tek tako da kažeš da nešto ne radi i da očekuješ da ti neko pomogne. Uključi prikaz grešaka, logovanje, izvuci konkretnu grešku (ili greške) koje dobijaš i postavi ovde pa će neko možda i moći da ti pomogne.

Na prvu loptu ako nešto radi na Windowsu a ne na Linuxu rekao bih ti da proveriš dozvole za određene fajlove/foldere. Koliko se sećam, Smarty kompajlira templejte nazad u PHP i to drži u određenom folderu pa proveri da li PHP može da piše u taj folder.

Citat:
Smarty will need write access (windows users please ignore) to the $compile_dir and $cache_dir directories (templates_c/ and cache/), so be sure the web server user account can write to them.


sa: http://www.smarty.net/docsv2/en/installing.smarty.basic
[ Nemke_BG @ 17.04.2016. 20:43 ] @
Citat:
Nemanja Avramović: Koliko se sećam, Smarty kompajlira templejte nazad u PHP i to drži u određenom folderu pa proveri da li PHP može da piše u taj folder.


Odlicno se secas


@Nepoverljiv

Prikaz gresaka ukljuci obavezno, znaci:
Code:

error_reporting(E_ALL);
ini_set('display_errors', 'On');


Dok ne debug-ujes sta je problem.

[Ovu poruku je menjao Nemanja Avramović dana 18.04.2016. u 13:45 GMT+1]
[ nepoverljiv @ 23.04.2016. 09:39 ] @
Uljucene mi greske ali nece svaki put da mi izbaci sta je u pitanju. Znam da moram da napisem tacan opis problema ali mi ovo vie bilo razmisljanje naglas :))).

Moze da ne otvaram novu temu, izbrisao sam smarty i koristim iskljucivo CI parse i nista vise, i to na sledeci nacin:

View:

Code:

<!DOCTYPE html>
<html lang="en">
<head>
</head>
 <body>
  <?php echo $content ?>
 </body> 
</html> 


Controler:

Code:

    $query = $this->users_mod->allProducts();
    $data = array(
              'ap_heading' => 'Product definition',
              'ap_entries' => $query,
            );
    $content = $this->parser->parse('allproducts', $data, TRUE); 
    $this->load->view('template', compact('content'));


Pitanje je sledece, kako da iskljucim iz kontrolela "compact", to jest kako da se organizujem bez njega i da u view izbacim celokupnu php sintaksu?
[ nepoverljiv @ 24.04.2016. 13:44 ] @
Snasao sam se i za ovo, u kontroleru sam uradio sledece :

Code:

$query = $this->users_mod->changeProductData($idPro);
$url = base_url();
$data = array(
             'ap_heading' => 'Edit product',
             'base_url' => base_url(),
             'ap_entries' => $query,
             'ap_product' => 'active',
             'ap_username' => $this->session->userdata['logged']['username'],
             'ap_content' => $this->load->view('editproduct', '', true)
           );

$this->parser->parse('template', $data);


U view zvanom template.php sa, uradio ovo:

Code:

<div class="container-fluid main-body">
   <?= $ap_content ?>      
</div>


Ono sto mi sad nije jasno je kako mogu u template da koristim sve ove podatke iz array-a koji dobijam iz kontrolera kao varijable u php tagu, ali to isto ne mogu da uradim u editproduct.php? Ovo mi je veoma vazno da resim zbog set_value kod validacije forme.

Da li neko moze da pomogne?
[ Tpojka @ 24.04.2016. 15:12 ] @
Ne mozes to uraditi jer dodavanjem TRUE parametra za view loader, dobijas string.
Moraces da modelujes drugaciji pristup.
[ nepoverljiv @ 24.04.2016. 15:28 ] @
Ako ne dodam TRUE onda mi ceo template pada u vodu.

Sta mislis, kako bih ovo mogao da odradim, na koji nacin? Ovo mi je najblize sto sam postigao...
[ Tpojka @ 24.04.2016. 15:43 ] @
A da napravis include/load editproduct fajla u templejtu umjesto u kontroleru?
[ nepoverljiv @ 24.04.2016. 15:58 ] @
Fora je sto mi "mentor" to ne dozvoljava, moram da se na ovaj nacin dovijam. A da li mogu nekako da napisem neki $data ispod ovog array-a, da li bi onda ocitao kao varijablu?

P.S. sad sam probao i to, ali mi izbacuje gresku da je nedefinisana varijabla :/.

P.S.S. probao i 'ap_content' => 'include(\'editkey.php\')' ,ali ne radi :/
[ Tpojka @ 24.04.2016. 16:41 ] @
Citat:
nepoverljiv: Fora je sto mi "mentor" to ne dozvoljava, moram da se na ovaj nacin dovijam.


Dobro je sto si sam pomenuo.
Daj nam konkretne uslove koje mentor zahtjeva.
Ovako, dosad, sta god je ponudjeno kao rjesenje - ispostavilo se da bas tako ne treba(?).
Licno smatram da sami uslovi odudaraju od standardizacije kodiranja pa bi bilo dobro da se iznes ovde kako bi tacno trebalo izgledati da bi se mogao razmotriti eventualan pristup.
Plus, obavezno neki primjer koji je mentor obezbijedio.
[ nepoverljiv @ 24.04.2016. 17:13 ] @
Mentor nije obezbedio nijedan primer nego samo zahteve. Zahtevi su da koristim parse i izbrisem sav moguci php kod iz view, da imam template gde ce samo content da se menja u zavisnosti od kontrolera. Ono sto je pomenuo to je da on u jednoj liniji poziva vise view-a i da bez true ne moze to da radi, sta god znacila ova recenica samo sam je preneo.

Verujem da je mislio nesto na:

Code:

$this->parser->parse('template', 'editproduct, $data, true); 


E sad kako onda da na osnovu ovoga pozovem content u template fajlu, ali i ako to uspem isto mi se nece dozvoliti da koristim varijable u php tagu zar ne? A i nije mi jasno kako misli da izbrisem php tag skroz iz view a da koristim set_value, pa ono se koliko ja znam koristi samo u okviru php-a. Takodje ne znam drugaciji nacin da ispisem greske koje izbaci validacija forma nego pomocu php-a u view.

Verujem da sam vas jos vise zbunio :/.