olarak 404 sayfa nasıl görüntülenecek phalcon bir 404 sayfası ayarlayabilirsiniz?Nasıl kurulur phalcon
cevap
sizin için bunu yapmaya memuru ayarlayabilirsiniz.
Başvurunuzu bootstrap zaman bunu yapabilirsiniz ($di
sizin DI fabrika):
use \Phalcon\Mvc\Dispatcher as PhDispatcher;
$di->set(
'dispatcher',
function() use ($di) {
$evManager = $di->getShared('eventsManager');
$evManager->attach(
"dispatch:beforeException",
function($event, $dispatcher, $exception)
{
switch ($exception->getCode()) {
case PhDispatcher::EXCEPTION_HANDLER_NOT_FOUND:
case PhDispatcher::EXCEPTION_ACTION_NOT_FOUND:
$dispatcher->forward(
array(
'controller' => 'error',
'action' => 'show404',
)
);
return false;
}
}
);
$dispatcher = new PhDispatcher();
$dispatcher->setEventsManager($evManager);
return $dispatcher;
},
true
);
bir ErrorController
<?php
/**
* ErrorController
*/
class ErrorController extends \Phalcon\Mvc\Controller
{
public function show404Action()
{
$this->response->setStatusCode(404, 'Not Found');
$this->view->pick('404/404');
}
}
ve 404 görünüm oluşturma (/views/404/404.volt
)
<div align="center" id="fourohfour">
<div class="sub-content">
<strong>ERROR 404</strong>
<br />
<br />
You have tried to access a page which does not exist or has been moved.
<br />
<br />
Please click the links at the top navigation bar to
navigate to other parts of the site, or
if you wish to contact us, there is information in the About page.
<br />
<br />
[ERROR]
</div>
</div>
Bu (neredeyse tam kopyası, kontrolör/eylem adları için kaydedin) benim için son derece yararlı oldu. Çok teşekkürler! – Trenton
kusursuz çalışıyor. – vee
ve 404 sayfanın yanı sıra bazı eylemlerden 503 durum sayfasını ayarlamak istersem ne olur? Durum kodunu parametre vb. Olarak ayarlayabilir ve ErrorController'dan okuyabilir miyim? Bunu nasıl yapabilirim ? – alexglue
Başlığı bir hataya da ayarlayabilirsiniz. Bir hata meydana gelmişse denetleyicisi, içinde,
class ErrorController extends ControllerBase
{
public function error404Action()
{
$this->response->setHeader('HTTP/1.0 404','Not Found');
// $this->response->setHeader(404, 'Not Found'); <- did not work
}
}
Ve önce
kullanarak ontrol, bu hata-denetleyici iletebilir. Eğer bir veritabanındaki içeriği alma ve hiçbir şey bulunduğu takdirde, bir hata atmak istiyorsanız eğer, hızlı ve kirli (?) yoludur ve iyiclass IndexController extends ControllerBase
{
public function indexAction()
{
$id = (int)$this->getId($param);
if ($id > 0) {
// do you stuff
} else {
$this->dispatcher->forward(array(
'controller' => 'error', 'action' => 'error404')
);
}
}
}
.
Sen 404 işlemek için yönlendirmeyi kullanabilirsiniz sayfa bulunamadı:
$router->notFound(array(
"controller" => "index",
"action" => "route404"
));
Ref: Dimopoulos önerdiği http://docs.phalconphp.com/en/latest/reference/routing.html#not-found-paths
Bu yalnızca bu kodla çalışır: '$ yönlendirici = Phalcon \ Mvc \ Router (YANLIŞ); // $ defaultRoutes = false' –
çözüm çalışmaz. Bir bisiklet koşulu oluşturur. /: Kontrolör /: action /: parametreler
phalcon Yönlendirici bileşeni daima aşağıdaki deseni ile eşleşen bir URI beklediğini çok basit yönlendirme sağlayan bir varsayılan davranışı vardır. Bu, birçok soruna neden olacaktır çünkü Phalcon, sunucu tanımlanmış herhangi bir yolla eşleşmeyen bir URL için istek aldığında mevcut olmayan bir denetleyiciyi arayacaktır.
Yani, her şeyden önce, sen bu davranış devre dışı bırakmalısınız.
$router = Phalcon\Mvc\Router(FALSE);
sen @ Nguyễn Trong Bang önerdiği çözümü kullanabilirsiniz Bu noktada şu şekildedir: Bu, Yönlendirici örneği oluşturma sırasında FALSE
geçen yapılabilir.
$router->notFound(
[
"namespace" => "MyNamespace\Controller"
"controller" => "index",
"action" => "route404"
]
);
Bu nota bir ad alanı kullanıyorsanız memuru yukarıda yaptığım gibi, onu belirtmedikçe, denetleyici bulmak mümkün olmayacaktır önemlidir.
Bu sadece en kolay çözümdür, ama işe yarıyor sadece bir tanesidir.
Router'a false ileterek devre dışı bırakırsanız, diğer tüm routlar bulunamaz ve tüm sayfa 404 yoluna gider. – vee
@vee bu doğru değil. Bu, yalnızca yolları tanımlamazsanız gerçekleşir: bir yol ile onun göreceli denetleyicisi/eylemi arasındaki eşleme. Yukarıda yazdığım gibi, Yönlendirici'nin eşleme /: controller /: action /: params ile eşleşmesi için varsayılan bir davranışı vardır, ancak rotalarınız ile bunların göreli eylemleri arasındaki ilişkiyi tanımlamakta özgürsünüz. Sonra varsayılan davranışı devre dışı bırakabilirsiniz. İndirmeden önce belgeleri okuyun. – noun
Doküman okudum. ve rotayı tanımladım ve zaten bunun işe yaramadığını test ettim. // Yönlendiriciyi oluştur $ yönlendirici = yeni \ Phalcon \ Mvc \ Router (yanlış); $ router-> ekleyin ( '/ göstergesi/sayfa3/([a-z-0-9 _-] +)/([a-z-0-9 _-] +)/{safyaadı}', dizisi ( 'kontrol' => 'endeksi', aksiyon '=> 'sayfa3', 'rulo'=> 1, 'parça'=> 2, ) ); $ router-> NOTFOUND ( dizi ( "kontrol" => "hata", "eylem" => "E404" ) ); http: // localhost/phalcon /> sayfasına git http: // localhost/phalcon/index/page3> sayfasına git rotada tanımlanmış herhangi bir sayfaya gidin> sayfa bulunamadı – vee
- 1. Tercüme merkezi Phalcon
- 2. Phalcon kaydetme çalışmıyor
- 3. PHP Phalcon: Görüntülenmiyor mu?
- 4. Phalcon çoklu modül çalışmıyor
- 5. phalcon Dev Araçları - modeller dizini
- 6. Modüler Güçlendirme nasıl kurulur?
- 7. Anaconda'da PyPy nasıl kurulur
- 8. Sqelectron Linux'ta nasıl kurulur?
- 9. androidde openssl nasıl kurulur
- 10. Sanal Treeview nasıl kurulur?
- 11. Pencerelerde calabash nasıl kurulur?
- 12. Ubuntu'da monodevelop nasıl kurulur
- 13. EmbeddedSolrServer örneği nasıl kurulur?
- 14. ActionBarSherlock nasıl kurulur?
- 15. Nasıl kurulur acts_as_follower
- 16. Ubuntu'da Hadoop nasıl kurulur
- 17. Ubuntu'da pigmentler nasıl kurulur?
- 18. Debian'da Mono nasıl kurulur
- 19. Xuggler nasıl kurulur?
- 20. Mac'te PyGLEW nasıl kurulur?
- 21. Linux'ta freetds nasıl kurulur?
- 22. Windows'ta pip3 nasıl kurulur?
- 23. Anaconda'da paket nasıl kurulur?
- 24. Fonksiyon için farklı phalcon/mvc/koleksiyon
- 25. Phalcon, Modeller, Action_on cascade set null?
- 26. Diğer modüller için Phalcon çoklu modül yolları
- 27. Phalcon PHP geliştiricisi olarak hata ayıklama
- 28. DriverManager.getConnection (...) ile nasıl bağlantı kurulur?
- 29. Snow Leopard'da iPython nasıl kurulur
- 30. Genel git depoları nasıl kurulur?
ben cevap geldi ... ama :) – twistedxtra