Denetleyiciyi genişleten bir MainController var. Tüm uygulamamın denetleyicileri, herhangi bir Denetleyiciden erişilmesi gereken çeşitli yöntemler ve özellikler içeren MainController'dan genişler. veritabanında tutulan yönlendirmeler içinYii2 beforeAction yöntemi içinde runAction() yöntemini kullanın.
- Çekler ve URL DB biri eşleşirse onları gerçekleştirir: my MainController içinde
birçok şeyi gerçekleştirir, hangi
beforeAction
olduğunu. - Her bir denetleyici için
<head>
veri üretir - Kullanıcının, URL'nin çerez ve slug'unu temel alarak görüntülediği dili ve ülkeyi bulur. (ör. http://example.com/netherlands).
- URL, veritabanının
pages
tablosundan biriyle eşleşen bir şablondan genel bir sayfa oluşturacaktır.
En son uğraştığım şey bu. Benim MainController, bu var:
$ this-> checkPages() aşağıdakileri içerir/**
* Before action, check all $this->before_actions satisfy. If no head_data provided, try and fill in some basics
*/
public function beforeAction($action)
{
// Run parent method first
if (!parent::beforeAction($action))
return false;
// Check redirects
$this->checkRedirects();
if($this->checkPages())
{
// If not error page, loop through before methods
if($action->id !== 'error')
{
// Loop through actions to peform and do them
foreach ($this->before_actions as $before_method)
$this->$before_method();
}
return true;
}
}
:
/**
* Check for pages
*/
public function checkPages()
{
// Attempt to find page for this request
$page = Page::find()->where([ 'permalink' => trim(str_replace(getBaseUrl() , "", getCurrentUrl()), "/") ])->one();
// If found, load it instead
if(!empty($page))
return Yii::$app->runAction("pages/show", [ 'id' => $page->id ]);
// Else, return
return true;
}
ben yaşıyorum Sorunum, http://example.com/story giderseniz hiçbir olmadığından olmasıdır StoryController, eylemi çalıştırmasına ve "Gösterim/öykü/show" görünümünün çıkmasına rağmen 404 hatası döndürür.
Bunu nasıl önleyebilirim?
DÜZENLEME:
eklemek için günlük ilk diyor gösterir: "Unable to resolve the request 'story/index'"
.
Ama
ardından ek günlükleri gösterir:"Route to run: pages/show"
...
"Running action: app\controllers\PagesController::actionShow()"
..
Rendering view file: /Users/stefandunn/Documents/Local Machine Development/views/pages/show.php
Bu yüzden 404 statüsünü
Ben önerilen bir çözüm olarak bu düşündüğünü, ancak, standart rotalar '/' yakalamak için son kuralı kullanın. Sayfaların Oluştur/Güncelle/Sil'inde htaccess dosyasını yeniden yazdım. –