Структуриране на проекта посредством модули
В това видео ще ви покажа как да структурирате проекта си за работа с модули.
Модулите са много важно нещо и често без тях сайтовете стават доста объркани като подредба и неправилни като организация.
Модулите са извън MVC структурата. Вместо това всеки един от модулите има своя собствена MVC структура controller-view-model.
Коментирай
 
Потребител : *
Сайт (URL) :
Коментар : *
Въведи текста : *
  _  __   _    _     _____    __   __   ______   
 | |/ // | || | ||  /  ___||  \ \\/ // |      \\ 
 | ' //  | || | || | // __     \ ` //  |  --  // 
 | . \\  | \\_/ || | \\_\ ||    | ||   |  --  \\ 
 |_|\_\\  \____//   \____//     |_||   |______// 
 `-` --`   `---`     `---`      `-`'   `------`  
                                                 
 
преди 7 месеца
За съжаление няма как да позная:) Предлагам ти да си го създадеш ръчно модула. Така няма да те тормози този проблем.
Георги Банков 1914
преди 7 месеца
С това се оправих, със "cd" не стана, но се получи с pushd командата. Но след като изпълня командата за създаване на модул, просто ми дава нов ред и не създава модул. Какъв би могъл да е проблемът? :)
Георги Банков 1914
преди 7 месеца
А как да вляза в директорията? Със "cd" командата не става...
преди 7 месеца
Предполагам, че проблема идва от това, че се опитваш да създадеш модул на място на което няма проект.

Ако проекта ти се намира тук "G:\WampServer\www\online_school\"

То няма как това да стане "C:\Users\Gogo>G:\ZendFramework\bin\zf.bat create module default"

Трябва да е "G:\WampServer\www\online_school>G:\ZendFramework\bin\zf.bat create module default"

Трябва да си в папката на проекта.
Георги Банков 1914
преди 7 месеца
C:\Users\Gogo>cd G:\WampServer\www\online_school\

C:\Users\Gogo>G:\ZendFramework\bin\zf.bat create module default
An Error Has Occurred
A project profile was not found.

Zend Framework Command Line Console Tool v1.11.10
Details for action "Create" and provider "Module"
Module
zf create module name

Така и не успявам да създам модул, някакви идеи? :)
преди 8 месеца
Сработи и без това нещо. Не помня защо го бях слагал. Май имаше някви опции още към него които после бях махнал и е останало.
преди 8 месеца
В bootstrap-а имаш предполагам:
protected function _initAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => '',
'basePath' => dirname(__FILE__),
));
return $autoloader;
}

След това в application.ini:
;Modules
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules = ""

В папка модулес да предположим, че имаш admin модул.
Имаш си там bootstrap:
class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
}

Имаш примерно папка forms/Article.php което е:
Admin_Form_Article

Всичко работи и не е нужно предефиниране.

Все пак аз не го правя така:
resources.frontController.defaultControllerName = "bg"
resources.frontController.defaultModule = "default"

resources.frontController.controllerDirectory = APPLICATION_PATH "/modules/default/controllers"

Така, че заради това може да има разлика.
Default модула си го държа в application. Всички други са в модулес при мен. Понеже човек има доста работа с "front-end" частта още две директории който да се отварят идват в повече, а именно modules/default.

Все пак ако не става с _initAutoload() и другите неща които казах, ще взема да го тествам.
преди 8 месеца
Ресурсите се налага да ги късътмизирам заради разликата в множественото число. Ако кръстя
Form_User дадена форма Няма да ми я намери в папка Forms а ще я търси в папка Form От езикова гледна точка папката съдържаща формите както и на моделите както и на всички други неща е редно да е в множествено число. Това работи чудесно когато не е с модули. Хрумна ми ако се предефинира буутстрап-а във всеки модул Примерно за админ-а да стане

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap {

}

и ако там поставя зареждането на тея ресурси за съответния модул би трябвало да работи.

директории в момента са ми в следния вид
application
--configs
--layouts
--logs
--modules
----admin
------controller
------models
------views
----default
------controller
------models
------views
--public_html

в конфиг-а съм задал така

resources.frontController.defaultControllerName = "bg"
resources.frontController.defaultModule = "default"

resources.frontController.controllerDirectory = APPLICATION_PATH "/modules/default/controllers"

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

resources.modules[] =

Не мога нещо да се оправя с тея ресурси затова не ми намира Model_Acl() както и Plugin_AclCheck()
Вероятно ги търси в Model i Plugin директорите вместо с "s" накрая на тях. Някаква идея как да реша тоя проблем. С лейаут-а няма проблем. Контролерите също работят.
преди 8 месеца
Доста сложно си го подкарал:)

Формата и моделите си се викат от модулите като сложиш перфикса на модула. За тях няма проблем.
За layout-а трябва сам да си напишеш нещо и да ги позиционираш където искаш. Аз лично си държа папка layouts във всеки отделен модул.

Default модула не ми е в папка, а както си е при стартиране на проект.

Плъгина не ми се е налагало да го слагам във всеки модул понеже той е preDispatch и т.н. което е общо за сайта.

Всичко работи с перфикса - името на модула, без плъгините за който нямам информация. Поне не съм тествал.

Това което го правиш е излишно за да работят модулите заедно с форми, модели и т.н.

Та по скоро аз имам въпрос. Защо къстимизираш resources? Кое ти липсва в модулите което го няма?

А плъгин да има във всеки модул е излишно. Но дори и да ти трябва може да си го сложиш в папка app или както решиш да я кръстиш в library. И да си я организираш app/plugins/ime_na_modul/plugini
преди 8 месеца
Здравей. От клипчето не станаха ясни някои неща. Ще съм благодарен ако разясниш малко. Как да лоадваме неща които не са в module direcory примерно plugin директорията си остава отвън тъй като тя не е тясно свързаана с модулите ами с лоудването на системата. Ето примерен код от лоудера ми в буутстрап-а

protected function _initAutoload()
{
// Add autoloader empty namespace
$autoLoader = Zend_Loader_Autoloader::getInstance();
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
'basePath' => APPLICATION_PATH ,
'namespace' => '',
'resourceTypes' => array(
'form' => array(
'path' => 'forms/',
'namespace' => 'Form_'),
'model' => array(
'path' => 'models/',
'namespace' => 'Model_'),
'plugin' => array(
'path' => 'plugins/',
'namespace' => 'Plugin_'),
'viewhelper' => array(
'path' => 'views/helpers',
'namespace' => 'View_Helper'),
)
)
);

$this->_acl = new Model_Acl();
$fc = Zend_Controller_Front::getInstance();
$fc->registerPlugin(new Plugin_AclCheck($this->_acl));
return $autoLoader;
}

Когато го преработя да ползва
Zend_Application_module_Autoloader()
Как да организирам другите ресурси. Също ми казва че вече не намира плугин класа.
Предложи тема
Предложение от : *
Тема : *
Описание : *