Jump to content
php.lv forumi

Interesanta diskusija par MVC


Aleksejs

Recommended Posts

  • Replies 53
  • Created
  • Last Reply

Top Posters In This Topic

Tā, taisu modelī funkciju, kas pievieno jaunu lietotāju. Kur īsti man pārbaudīt, vai lietotāja vārds atbilst standartiem - modelī vai kontrolierī?

 

Modelī uztaisi pārbaudes funkciju, kontrolerī viņu izsauc un kļūdas gadījumā, tālāk visu kontrolē kontrolieris.

Link to comment
Share on other sites

  • 1 month later...

Atdzīvinam tēmu :)

 

Radās viens jautājums.

Īsāk sakot ir kontrolieris, blablabla, beigās nonākam līdz vienam skatam(templeitam) kurš tiek rādīts lietotājam.

 

Bet, man lapā mēdz būt lietas, kas atkārtojas dažādos skatos, piem, kaut kāda login forma, vai kaut vai footerī lietotāju skaits online. Vien-vārd-sakot tādi kā dinamiski modulīšu. It kā varētu rakstīt tādam modulītim funkciju, kas arī atgriež vajadzīgo html, un to funkciju vienkārši ielikt skatā. Bet, ja jau nodalu kodu no prezentācijas, tad tur sanāk bez maz vēl viens kontrolieris, vēl modeļi, vēl skats tajā modulī.

 

Kā īsti risina šādas lietas?

Link to comment
Share on other sites

Iekš Rails ir tāda cmuka lieta kā Partials. Tie savā ziņā ir tādi kā skati, tikai nedaudz vispārīgāki. Biežākie izmantojumi ir tās pašas formas, lai nav copy/paste pie jaunas lietas izveides un pie lietas labojumiem.

 

Aptuvenā ideja šāda:

 

Controller.php

public function new() {
 $this->item = new Item(); // te dabūnam kaut kādu lietu
 $this->render_template(); // te inklūdojam/izvadam atbilstošo skatu
}

public function edit() {
 $this->item = Item::find($id); // te dabunam labojamo lietu
 $this->render_template(); // tas pats kas iekš new()
}

 

new.php

<h1>Jaunas lietas izveide</h1>

<!-- te vēl kaut kāds custom stufs, piemēram -->

<?php $this->render_partial("form", array("submit_label" => "Izveidot")); /* te pievienojam kaut ko mainīgu ja vēlamies */ ?>

<!-- te vēl kaut kāds custom stufs -->

 

edit.php


<h1><?php echo $this->item->title; ?> lietas labošana</h1>

<!-- te vēl kaut kāds custom stufs, piemēram -->

<?php $this->render_partial("form", array("submit_label" => "Labot")); /* te pievienojam kaut ko mainīgu ja vēlamies */ ?>

<!-- te vēl kaut kāds custom stufs -->

 

_form.php

<form>
 <p>
   <!-- te ir formu stafs -->
 </p>

 <p>
   <input type="submit" value="<?php echo $submit_label; /* šis ir tāds kā dinamisks ko padod pie šī skata renderēšanas */ ?>" />
 </p>
</form>

 

Kaut kā tā :) kā to implementē tas jau vienalga. Galvenais, ka ērti.

 

Un jā - to var pārvietot arī uz helperiem. Tās ir tevis paša veidotas palīg-funkcijas, kur tu saraksti kaut ko daudz un tad tik izsauc funkciju, lai to procedūru izdaritu.

Link to comment
Share on other sites

Hmm, neesi apsvēris kāda frameworka apguvi? Tiem ir viss - gan modeļu, kontrolieru, viewu klases, gan dokumentācija, gan helperi, partials un pat dekorātori utt.

 

Arī darba tirgū varētu būt vieglāk, ja specializēsies uz vienu noteiktu. Tas gan ir tikai mans minējums.

 

Ieteiktu atkārtoti pastudēt, kas ir MVC, jo, spriežot pēc pēdējā jautājuma, šī pieeja nav saprasta līdz galam. Kā arī tas, ka ne helperi, ne partiali neattiecas uz MVC. Var būt MVC ar funkciju, kuru izsauc viewu skriptos, gan viewiem, kas izmanto helperus, partialus utt.

Link to comment
Share on other sites

  • 3 weeks later...

Man kā MVC noobam un skeptiķim kāds zinošāks varētu izstāstīt, kamdēļ vienmēr (nu praktiski vienmēr), kods tiek dalīts aptuveni šādi:

controllers
|-module1
|-module2
models
|-module1
|-module2
views
|-module1
|-module2

Tas ir mega neērti, jo jābrowsē pa miljons folderiem (sevišķi lieliem projektiem, ar vismaz N folderu dziļumu, piemēram, Magento), lai pamainītu kāda moduļa vienu no daļām - view, controller, vai model. Traks var palikt. Kā arī, jauna moduļa installācija jāveic pa n-tajiem folderiem.

 

Man daudz loģiskāk liekas šādi

module1
|-controller
|-model
|-view
|-data-and-other-module-spacific-storage-and-stuff
module2
|-controller
|-model
|-view
|-data-and-other-module-spacific-storage-and-stuff

 

Bonusi: daudz ērtāk strādāt ar konkrētu moduli, ērtāka uzstādīšana vai dzēšana.

 

Komentāri?

Edited by marrtins
Link to comment
Share on other sites

Es to saprotu kā dažāda veida komponenšu nodalīšanu. Tā, ka tu vari pateikt, piemēram, html dizainerim, ka tajā mapītē stāv visi faili, kas attiecas uz viņu...

 

Principā, katrs jau var darīt kā viņam ērtāk, ja vien nav jāstrādā komandā...

Edited by briedis
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...

×
×
  • Create New...