Pereiti prie turinio

Problema su CodeIgniter framework'u.


Rekomenduojami pranešimai

Sveiki, noriu išbandyti PHP framework'ą, bet jis man nepasileidžia. :( Įsikėliau į uWamp visus failus, susikonfiguravau Duom.bazę, config.php, vienu žodžiu kaip reikia. (Žiūrėjau ~5 pamokas), bet niekaip nepasileidžia...

 

Susikuriu failą application/controllers/ aplankale blog.php, į jį parašau:

 

<?php

class Blog extends CI_Controller {

function index() {
	echo "Sveiki!";
}

}

?>

 

Bet neveikia kai nueinu: http://localhost/ci/index.php/blog/. Gal kas žinote kame problema galėtų būti?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Blogą kodą parašei, turėtų būti taip (daugiau skaityk codeigniter dokumentaciją :) ):

 

 

<?php

class Blog extends CI_Controller {

       public function __construct(){
	parent::__construct();
}


       public function index() {
               echo "Sveiki!";
       }

}

?>

 

P.S. pažiūrėjau, kad tikrai CI dokumentacijoje neparašyta, kad reikia klasės konstruktorių iškviestų, tai čia kaip ir ne tavo klaida. :)

Redagavo Lapinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

P.S. pažiūrėjau, kad tikrai CI dokumentacijoje neparašyta, kad reikia klasės konstruktorių iškviestų, tai čia kaip ir ne tavo klaida. :)

 

Jeigu extendini kitą objektą (extends CI_Controller), PHP automatiškai iškviečia to objekto konstruktorių, todėl šitos eilutės yra bereikšmės:

 

public function __construct(){
   parent::__construct();
}

 

Jeigu nori atlikti kažkokius veiksmus savo objekto konstruktoriuje, pasirašai function __construct() {}, bet tada nekviečiamas extendinamo objekto konstruktorius, todėl reikia jį iškviesti "rankiniu būdu" - parent::__construct();

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jeigu extendini kitą objektą (extends CI_Controller), PHP automatiškai iškviečia to objekto konstruktorių, todėl šitos eilutės yra bereikšmės:

 

public function __construct(){
   parent::__construct();
}

 

Jeigu nori atlikti kažkokius veiksmus savo objekto konstruktoriuje, pasirašai function __construct() {}, bet tada nekviečiamas extendinamo objekto konstruktorius, todėl reikia jį iškviesti "rankiniu būdu" - parent::__construct();

 

Pats pabandžiau ir tikrai, tavo tiesa. :) Keista, kažkaip nežinojau to. Visgi reikės skaityti daugiau teorijos apie php OOP, nes nežinoti tokių dalykų - negerai. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki. Gal dar kas apšviesit su Formomis? Iki šiol dariau viską kaip mokėjau (HTML, PHP formos ir tiek), bet paskaitęs CodeIgniter User guide pamačiau, kad ten viskas yra kitaip, biški pasiskaitinėjau apie MVC, biški daugiau dabar žinau, bet... Su tomis formomis niekaip.

 

Dėkui iškarto! :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Gerai. :) Padarau failą form.php view folderyje:

 

<html>
<head></head>
<body>

First number:<br />
<input type='text' name='first' /><br /><br />
Second number:<br />
<input type='text' name='second' /><br /><br />
<input type='submit' name='submit' value='Submit' />

</body>
</html>

 

Toliau controller folderyje sukuriu failą submit.php:

 

<?php

class Submit extends CI_Controller
{
   public function index()
   {
       //Ką čia reikia toliau rašyti?
   }
}

?>

 

Noriu padaryti, kad įrašius į lauką „First number“ skaičių ir į „Second number“ skaičių, ir paspaudus „Submit“ mygtuką juos abu sudėtų ir išvestų naršyklės lange. Jei galima kodo pavyzdį parašykit ir jei gali paaiškinimų keletą, labai būčiau dėkingas. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Galimi įvairūs variantai, bet pats paprasčiausias, nenaudojant formos validavimo ir naudojant tą patį view failą (form.php) atrodytų maždaug taip:

class Submit extends CI_Controller
{
   public function index()
   {
// Imam formos duomenis
// $this->input->post('') veikia panašiai kaip $_POST['']
       $first = (int)$this->input->post('first');
$second = (int)$this->input->post('second');

$suma = $first + $second;

// Rodom form.php iš /application/views
// Antras view() funkcijos parametras leidžia form.php faile naudotis $suma kintamuoju
$this->load->view('form', array('suma' => $suma));
   }
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na taip, form.php šiuo atveju rodytų ir pačią formą ir formos rezultatą (susumuotus skaičius), pvz.:

 

<html>
<head></head>
<body>

First number:<br />
<input type='text' name='first' /><br /><br />
Second number:<br />
<input type='text' name='second' /><br /><br />
<input type='submit' name='submit' value='Submit' />

<? if (!empty($suma)): ?>
   <p>Suma: <?= $suma ?></p>
<? endif; ?>

</body>
</html>

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nes pamiršai <form> tagą. Įdėk:

 

<form method="post" action="">

 

arba taisyklingesnis variantas:

 

<form method="post" action="<?= site_url('submit') ?>">

 

P.S. site_url() funkcija priklauso "url" helperiui, todėl siūlyčiau įtraukti šitą helperį į /config/autoload.php kad užkrautu kiekvienos užklausos metu.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...