Kemito Posted June 7, 2011 Report Share Posted June 7, 2011 (edited) 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 June 7, 2011 by Kemito Quote Link to comment Share on other sites More sharing options...
daGrevis Posted June 7, 2011 Report Share Posted June 7, 2011 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. --> Quote Link to comment Share on other sites More sharing options...
Kemito Posted June 7, 2011 Author Report Share Posted June 7, 2011 (edited) 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 June 7, 2011 by Kemito Quote Link to comment Share on other sites More sharing options...
daGrevis Posted June 7, 2011 Report Share Posted June 7, 2011 Kā nevari "dabūt laukā"? class Foo { public function bar() { return 'baz'; } } $foo = new Foo(); echo $foo->baz(); Quote Link to comment Share on other sites More sharing options...
Rincewind Posted June 7, 2011 Report Share Posted June 7, 2011 CakePHP un Yii šāda tipa paziņojumus var glabāt sessijās (setFlash/getFlash funkcijas). Man šāda pieeja patīk, ļauj izvadīt kļūdas arī pēc redirektiem. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted June 7, 2011 Report Share Posted June 7, 2011 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... Quote Link to comment Share on other sites More sharing options...
Rincewind Posted June 7, 2011 Report Share Posted June 7, 2011 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. Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted June 7, 2011 Report Share Posted June 7, 2011 (edited) 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 June 7, 2011 by rATRIJS Quote Link to comment Share on other sites More sharing options...
Kemito Posted June 7, 2011 Author Report Share Posted June 7, 2011 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. Quote Link to comment Share on other sites More sharing options...
briedis Posted June 8, 2011 Report Share Posted June 8, 2011 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". Quote Link to comment Share on other sites More sharing options...
daGrevis Posted June 8, 2011 Report Share Posted June 8, 2011 Ar "exception'iem" gan tas nebūtu jādara. Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted June 8, 2011 Report Share Posted June 8, 2011 Kapēc nē? Quote Link to comment Share on other sites More sharing options...
daGrevis Posted June 8, 2011 Report Share Posted June 8, 2011 Tāpēc, ka "exception'i" tam nav domāti. Tos nav domāts rādīt lietotājiem. Tikai izstrādātājiem. Quote Link to comment Share on other sites More sharing options...
spainis Posted June 8, 2011 Report Share Posted June 8, 2011 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 Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted June 8, 2011 Report Share Posted June 8, 2011 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())); } } } Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.