Jump to content
php.lv forumi

Kļūdas izvadīšana


Kemito
 Share

Recommended Posts

Sveiki štukoju un štukoju, tā arī izštukot nevaru.

Griežos pie jums.

 

Respektīvi man ir lietotāja klase kurai iekšā ir metode pieņemsim "login".

Es iedodu parasti kļūdas ziņojumu vienkārši mainīgajā ( agrāk ) un pārbaudu vai uzstādīts mainīgais, tad vadam laukā.

Problēma sākas tagad, kā lai no metodes dabū template kaut kādā divā kaut kur to ārā, respektīvi VIEW pusē izvadīt kļūdu.

 

Modulis:

class user{
function login(){
//no šejienes nāk kļūdas paziņojums
}
}

 

HTML ( views )

<html>
<body>

<div class="viensdivs">
this is text
</div>
<div class="myerror">
Te es gribu savu kļūdu izvadīt.
</div>
</body>
</html>

 

centos visādi izfunktierēt ar display: block / none utml. bet kā nesanāk tā nesanāk. Ir kāds ieteikums/piemērs/mājiens jebkas.

 

Paldies par atsaucību.

Edited by Kemito
Link to comment
Share on other sites

Skatā var būt tikai HTML? Ja ir PHP, tad...

 

if ( isSet( $foo ) )

 

Ja tikai HTML un "template's" "valoda", tad mēģini atrast kādu konstrukciju, kas to spēj paveikt.

 

Piemēram, Mustache varētu darīt šādi (neesmu testējis, gan)...

 

<!-- HTML. -->
{{>error}}
<!-- HTML. -->

Link to comment
Share on other sites

Iepriekš iedevu mainīgo

$error = "This is my error";

un view pusē to parādīju kā

if(isset($error)){echo $error;}

 

Šoreiz tas gadījums nelīdz. PHP var izmantot, es pieminēju no klases dabūt laukā. Centos iestumt speciāli funkcijā kas izvada un iedodm tai funkcijā display: block un view pusē norādīt display: none, bet tas laikam bija muļķīgi.

Respektīvi es vēlos izvadīt vienkārši kļūdas paziņojumu kur man vaig, bet tākā es to mainīgo iedodu metodē ārā viņu dabūt nevaru vismaz līdz šim.

Globālu mainīgo vai ko tamlīdzīgu ? Kādā veidā jūs reāli padodat kļūdu paziņojumu, ja jūs visu apstrādi darat klasē, un kad vaig izvadīt kļūdu, tās piešķire notiek metode un izvadīt vaig view pusē.

 

 

Edit: iesmērēju globālu mainīgo, viss sanāca, nezinu vai tas ir labi vai slikti, bet nu parastam kļūdas paziņojumam sanāca.

Edited by Kemito
Link to comment
Share on other sites

Arī Kohana un Fuel. Tikai skaties, vai nedari to lieki... ja tas ir kopā viens pieprasījums ("request"), tad nav jēgas veidot sesiju.

 

Kemito, iedod visu kodu, kas Tev ir. Neko nevar saprast, ja godīgi...

Link to comment
Share on other sites

Arī Kohana un Fuel. Tikai skaties, vai nedari to lieki...

Hmm.. kapēc? Ja nu nākotnē savajadzēsies pielikt kaut kur redirect, ko ta man, visam kodam cauri urbties un meklēt vai viņš kaut ko nesaplēsīs? Labāk uzreiz izvēlēties vienu veidu kā kļūdas izvadīt un pie viņa pieturēties. Manuprāt tā. Mikrooptimizācijas nafig.

Link to comment
Share on other sites

Parasti jau skatiem piešķir lokālos mainīgos.

 

$this->render("skats", array("error" => "fail"));

// vai

$v = new View("skats");
$v->assign("error", "fail");
$v->render();

 

Vai arī instances mainīgos (tas gan būtu patizli šajā gadījumā IMO)

 

// controller
$this->error = "fail";
$this->render("skats");

// view

echo $this->error;

 

Ja nezini kā dabūt ārā kļūdas paziņojumu no modeļa (tavā gadījumā user::login metode), tad arī tam ir vairāki risinājumi

 

Vai nu exceptions

// model

public function login() {
 if(kaut_kas_kas_nozīmē_ka_ir_kļūda)
   throw new Exception("fail");
}

// controller

try {
 $user->login();
}
catch(Exception $e) {
 $error = $e->getMessage();
}

 

vai arī kaut kas cits ko es nezinu kā nosaukt

 

// model

public function login() {
 if(kaut_kas_kas_nozīmē_ka_ir_kļūda) {
   $this->set_error("fail");
   return false;
 }
}

// controller

if(!$user->login())
 $error = $user->get_error();

 

Protams es to visu rakstu lai tas atbilstu MVC patternam, bet tas šajā gadījumā nav svarīgi...

 

Ā - un globālie mainīgie smird! (es pārbaudīju!!!)

Edited by rATRIJS
Link to comment
Share on other sites

Paldies raķetei ( rATRIJ`am ) par atbildi, noteikti paspokošos ap taviem piemēriem. ja reiz pamēģināji ka globāļi smird, varbūt nomet kādu tekstu, kapēc utml. informācijas pēc.

 

Globāļi ir ļaunuma sakne, pārbaudīts vairākkārt praksē. Pameklē vien pats, google pilns - "globals are bad".

Link to comment
Share on other sites

exceptiona izsaukšana tomēr ir resurs ietilpīgs process

 

kā arī, visās labā kodešanas stila grāmatās tiek rakstīts - exception'us vajadzētu izsaukt tikai tad, ja ir noticis neparedzēts gadījums, kam parastas izpildes laikā nevajadzētu notikt(kā exceptiona nosaukums norāda), nevis lietotāja ievades kļūdu apstrādei

Link to comment
Share on other sites

Nepiekriitu. Validaacijas kljuuda ir neparedzeets gadiijums kas attieciigi ir jaanovada liidz galam, jo normaalo gaitu turpinaat nevar - aka neredzu iemeslu nelietot Exceptions.

 

class User {
 private $validate_not_empty = array(
   'username',
   'password',
   'email'
 );
}

class UserController {
 public function register() {
   $user = new User($_POST['user']);

   try { $user->save(); }
   catch(ValidationException $e) {
     $this->render('new', array('form_errors' => $e->get_reasons()));
   }
 }
}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

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

Loading...
 Share

×
×
  • Create New...