metal-0-1 Posted August 4, 2013 Report Share Posted August 4, 2013 Agrāk, neko nezinot par MVC, lai nodrošinātu to, ka formas validācija notiek tikai pēc tam kad lietotājs nospiedis "submit" un tāpēc tikko kā atvēris formas lapu jau nesaņem erroru par tukšu input lauku, es lietoju vnk isset() if(isset($_POST['x'])){ //Lietotajs ir nospiedis "submit" pogu un varu sakt validet datus //Valideju datus } //Else lietotajs nav nospiedis submit pogu, tatad vel neko nevajag darit. Bet šobrīd manā login lapā ir links uz reģistrēšanos, kas ved uz metodi, kas ielādē formas skatu bez nekādas validēšanas anchor('/x_controller/load_x_form', 'Sign up for the X!'); public function load_x_form(){ $view_data['main_content'] = 'x_form'; $this->load->view('template_view', $view_data); } Tālāk formas action ved atpakaļ uz to pašu Kontrolleri, bet citu metodi, kas veic validēšanu. Ja izdodas - ielādē success skatu, ja neizdodas, ielāde vēlreiz formu un parāda erroru form_open('x_controller/verify_x_form'); .... form_close(); public function verify_article(){ $this->load->library('form_validation'); $this->form_validation->set_rules('title', 'Title', 'required|trim|max_length[50]|min_length[3]'); $this->form_validation->set_rules('text', 'Text', 'required|trim|min_length[3]'); $input_validates = $this->form_validation->run(); if($input_validates){ //Do stuff $view_data['main_content'] = 'success_view'; $view_data['data']['msg'] = 'You have signed up for the X!'; } else{ $view_data['main_content'] = 'x_form_view'; $view_data['data']['error'] = validation_errors(); } $this->load->view('template_view', $view_data); } Man ir aizdomas ka MVC variants ir galīgi kreiss, isnt it? Tur ir viena metode priekš vnk plikas skata ielādēšanas, un tad atsevišķa ar validāciju. Kā to putru izstrebt elegantāk? Quote Link to comment Share on other sites More sharing options...
codez Posted August 5, 2013 Report Share Posted August 5, 2013 Es personīgi POST datu sūtīšanu no formas pedējo reizi izmantoju varbūt pirms gadiem pieciem. Parasti to visu daru ar ajax. Bet šajā gadījumā, vai tad ērtāk nav 2 action-i, kur post datu apstrādes action-s pēcāk redirekto uz formas/lapas attēlošanas action-u? Quote Link to comment Share on other sites More sharing options...
rpr Posted August 5, 2013 Report Share Posted August 5, 2013 vai tad ajax jau tas pats http reqvests vien ir ar get vai post parametriem. Vai tad tas butiski kaut ko maina? Es, piemeram, nesaprotu kapec jaizgudro jauns divritenis. Panem jau gatavu cms un papeti. Quote Link to comment Share on other sites More sharing options...
codez Posted August 5, 2013 Report Share Posted August 5, 2013 vai tad ajax jau tas pats http reqvests vien ir ar get vai post parametriem. Vai tad tas butiski kaut ko maina? Es, piemeram, nesaprotu kapec jaizgudro jauns divritenis. Panem jau gatavu cms un papeti. Ir divas princiāli atškirīgas darbības: 1) salasīt datus, kas jāatēlo lapā un attēlot tos 2) savākt datus no POST un veikt ar tiem darbības Gadījumā ar formām iesācējiem bieži vien ir tieksme šīs abas darbības likt vienā vietā/metodē/action-ā/utt. Ajax gadījumā šīs abas lietas principiāli atrodas dažādās vietās, tāpēc arī ieteicu veidu, kurš ir līdzīgākais tam, kā daru ar ajax. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted August 5, 2013 Report Share Posted August 5, 2013 Īsti nesaprotu tavu problēmu. Vajag noteikt, vai tas ir POST rekvests? Katram freimvorkam tas ir savādāk, bet, piemēram, Kohana -- http://kohanaframework.org/3.3/guide-api/Request#method , vai Django -- https://docs.djangoproject.com/en/1.5/ref/request-response/#django.http.HttpRequest.method . Quote Link to comment Share on other sites More sharing options...
blackhalt Posted August 5, 2013 Report Share Posted August 5, 2013 Nu HTTP POST nav atcelts. Ja forma ir POST, tad vienā brīdī nāksies pārbaudīt POST datus. Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted August 26, 2013 Report Share Posted August 26, 2013 Es personīgi POST datu sūtīšanu no formas pedējo reizi izmantoju varbūt pirms gadiem pieciem. Parasti to visu daru ar ajax. Jēdz atšķirību starp GET/POST un AJAX? Quote Link to comment Share on other sites More sharing options...
codez Posted August 26, 2013 Report Share Posted August 26, 2013 Jēdz atšķirību starp GET/POST un AJAX?GET/POST ir datu sūtīšanas metodes, kuras var izmantot gan sūtot no formas, gan sūtot ar ajax. Kā rakstīju iepriekš, no formas datus nesūtu pa tiešo, bet, ja sūtītu, izmantotu 2 actionus, kur pirmais apstradā no POST sanemtos datus, bet otrais kurš attēlo lapu. Un to darītu kaut vā tā iemesla dēļ, lai pēc post datu nosūtīšanas spiežot f5, nenotiktu atkārtota post datu nosūtīšana. Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted August 26, 2013 Report Share Posted August 26, 2013 Tas laikam Tavs šķībais ietvars, normālos tas viss ir atrisināts un AJAXu ieslēdz ar papildus darbībām pa virsu esošajam risinājumam, t.i., tā, ka darbojas gan ar, gan bez ajax. Piemēram, mobilajā skatā var neizmantot AJAX, bet kontrollera kods paliek tas pats. Quote Link to comment Share on other sites More sharing options...
codez Posted August 26, 2013 Report Share Posted August 26, 2013 (edited) Tas laikam Tavs šķībais ietvars, normālos tas viss ir atrisināts un AJAXu ieslēdz ar papildus darbībām pa virsu esošajam risinājumam, t.i., tā, ka darbojas gan ar, gan bez ajax. Piemēram, mobilajā skatā var neizmantot AJAX, bet kontrollera kods paliek tas pats.Atvaino, ka neatbilstu taviem standartiem, bet pēdējie projekti man bijuši diezgan sarežģītas klienta puses aplikācijas, kur viss griežas uz js. Kontaktu formas sen vairs netaisu. Un kāpēc lai mobīlajā taisītu formas postu un pārlādētu visu lapu, ja var ar ajax? Ar formu postošanu nodarbojas tie, kas mācās vēl pamatus, vai uztur arhaiskas sistēmas. P.S. Vienīgā vieta, kur izmantoju formas postu, ir failu aukšuplāde, jo vienkārši nav citu variantu. Edited August 26, 2013 by codez Quote Link to comment Share on other sites More sharing options...
daGrevis Posted August 26, 2013 Report Share Posted August 26, 2013 Neredzu jēgu taisīt AJAX, ja bez AJAX var iztikt. Mazāk kods. :) Quote Link to comment Share on other sites More sharing options...
jurchiks Posted August 26, 2013 Report Share Posted August 26, 2013 (edited) Lietotājiem ērtāk, tur jau tā sāls. + trafiku ietaupa - nav jāielādē visas lapas HTML, tikai pliki dati AJAX requestam. Edited August 26, 2013 by jurchiks Quote Link to comment Share on other sites More sharing options...
daGrevis Posted August 26, 2013 Report Share Posted August 26, 2013 Kāpēc? Lietotājiem vienalga. 1. Tiek izmantots HTML method=post. 2. Formas submits tiek noķerts, tiek aizsūtīts AJAX rekvests, ar JavaScript tiek veikts redirekts. Quote Link to comment Share on other sites More sharing options...
jurchiks Posted August 26, 2013 Report Share Posted August 26, 2013 Tu laikam joko... Quote Link to comment Share on other sites More sharing options...
codez Posted August 26, 2013 Report Share Posted August 26, 2013 (edited) 2. Formas submits tiek noķerts, tiek aizsūtīts AJAX rekvests, ar JavaScript tiek veikts redirekts.1. Pamēģini uztaisīt ar formas postu un lapas pārlādi, piemēram, treeview, kur var navigēt pa koku, kurš ir pietiekami liels un tā apakšzari tiek ielādēti tikai uz konkrēta foldera atvēršanu. 2. Pamēģini formas submita pārķeršanu izmantot datu nosūtīšanai no jebkura kaut cik komplicēta jquery widget-a, piemēram, kādu grida, charta, spreadsheeta, kalendāra, intervālu slidera, utt. Man jāsāk domāt, ar kāda līmeņa projektiem jūs ņematies, ja jums pietiek ar html formas submitu. Esat dzirdējuši kaut ko par klienta puses mvc, mvvm, klienta puses modeļiem (Backbone, Knockout, Ember ???) un tamlīdzīgām lietām? Šajās kategorijās par html formu submitu neviens vairs sen nerunā, jo ar to vienkārši nav iespējams atrisināt tās lietas, kas ir normālā modernā web aplikācijā. Edited August 26, 2013 by codez 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.