Invalid mapping mask pre moduly

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
iNviNho
Člen | 352
+
0
-

Ahojte,

Troška sa hrám s appkou a chcem si zmeniť štruktúru na:

-  App
------- Admin
------------- MailerModule
------------------- model
------------------- presenters
------------------- templates
--------------InvoiceModule
--------------UserModule
------- Front

a skúšal som mapping

application:
	errorPresenter: Error
	mapping:
		*: App\*\*Module\Presenters\*Presenter

A dostávam:

Nette\InvalidStateException Invalid mapping mask

Napadá vás niečo? :)

David Matějka
Moderator | 6445
+
0
-

to Admin a Front chces mit jako moduly? tzn nazev presenteru bude Admin:Mailer:Abc ?

iNviNho
Člen | 352
+
0
-

David Matějka napsal(a):

to Admin a Front chces mit jako moduly? tzn nazev presenteru bude Admin:Mailer:Abc ?

Áno, dá sa povedať. Admin je administrácia webu, Front je web pre zákazníka. Admin má moduly a jeden z nich je MailerModule …

Unlink
Člen | 298
+
+3
-

Neviem presne, ale toto by nešlo?

application:
    errorPresenter: Error
    mapping:
        Admin: App\Admin\*Module\Presenters\*Presenter
		Front: App\Front\*Module\Presenters\*Presenter
Aurielle
Člen | 1281
+
+1
-

Doporučuju k přečtení tohle :)

iNviNho
Člen | 352
+
0
-

Aurielle napsal(a):

Doporučuju k přečtení tohle :)

Presne toto som hľadal!!! Ďakujem

iNviNho
Člen | 352
+
0
-

Unlink napsal(a):

Neviem presne, ale toto by nešlo?

application:
    errorPresenter: Error
    mapping:
        Admin: App\Admin\*Module\Presenters\*Presenter
		Front: App\Front\*Module\Presenters\*Presenter

Pri tomto mi nefunguje namespace

<?php

// nefunguje
namespace App\Admin\MailerModule;

//funguje
namespace MailerModule;

?>

Ako to spraviť aby to bralov potaz aj App\Admin? :-\

David Matějka
Moderator | 6445
+
0
-

Asi to nesmerujes na modul Admin:Mailer, ale jen Mailer

iNviNho
Člen | 352
+
0
-

Ok, takže mám

application:
	errorPresenter: Error
	mapping:
		Admin: App\Admin\*Module\*Presenter
		Front: App\Front\*Module\*Presenter

Router

<?php
$router[] = new Route('[<locale=sk sk|en>/]admin/<presenter>/<action>[/<id>]', array(
			    'locale' => 'sk',
			    'module' => 'Admin',
			    'presenter' => 'Mail',
			    'action' => 'default',
			));
?>

A napr. MailPresenter

<?php

namespace App\Admin\MailerModule;

class MailPresenter {}

?>

A dostávam error:

Cannot load presenter ‚Admin:Mail‘, class ‚App\Admin\MailPresenter‘ was not found.

Dostávam error

// ten router sa mi nepáči, tam môže byť niekde chybička …

EDIT 1:

Zdá sa, že toto zatiaľ funguje:

<?php
$router[] = new Route('[<locale=sk sk|en>/]admin/<module><presenter>/<action>[/<id>]', array(
			    'locale' => 'sk',
			    'module' => 'Admin:Mailer', // Pridanie Admin:
			    'presenter' => 'Mail',
			    'action' => 'default',
			));
?>

EDIT 2:

Riešenie v EDITE 1 funguje iba konkrétne pre Admin:mailer, nedá sa napísať niečo univerzálnejšie?

Editoval iNviNho (13. 4. 2016 12:53)