Kohana 3, nasıl 'index.php' yerleştirilerek durdurmak için form helper söyleyebilirim

4 Cevap php

Ben Kohana 3 form::open kullandığınızda, ben bu olsun

<form action="/my-site/index.php/bla" method="post" accept-charset="utf-8"> 

Nowhere sitemde ben index.php orada olmak itimat yok. Ben bu çirkin görünüyor düşünüyorum. Ondan index.php kaldırmak için kolay bir yolu var mı.

Açıkçası ben bir str_replace() yapabileceğini biliyorum, ama ben daha zarif bir yolu olabilir düşündüm?

4 Cevap

Kohana (yanı sıra CodeIgniter ve diğer çerçeveler çoğu) dayanır bunu derinden kesmek sürece Front-Controller Pattern (index.php) yani ben bunu güvenmek gerekmez nasıl göremiyorum .

form::open() kaynağında hızlı bir görünüm sonra:

public static function open($action = NULL, array $attributes = NULL)
{
    if ($action === NULL)
    {
        // Use the current URI
        $action = Request::instance()->uri;
    }

    if ($action === '')
    {
        // Use only the base URI
        $action = Kohana::$base_url;
    }
    elseif (strpos($action, '://') === FALSE)
    {
        // Make the URI absolute
        $action = URL::site($action);
    }

    // ...
}

Ben bir mutlak URL belirtmeden mümkün olduğunu sanmıyorum. Eğer yapıyor sakıncası yoksa bir çözüm olabilir:

form::open('http://domain.com/my-site/bla');

Aksi takdirde iyi yaklaşım str_replace() or override the it with an application helper olacaktır.


If you edit the url yardımcı (/system/classes/kohana/url.php) ve bu gelen değişiklik satırı 71:

return URL::base(TRUE, $protocol).$path.$query.$fragment;

Buna:

return URL::base(FALSE, $protocol).$path.$query.$fragment;

All index.php görünüşe gitmiş olmalıdır.


Ben bu işe eğer emin değilim, ama içinde application/bootstrap.php Bu değiştirin:

Kohana::init(array('base_url' => '/kohana/'));

Buna:

Kohana::init(array('base_url' => '/kohana/', 'index_file' => ''));

Kohana3 için Kohana2.x gibi hemen hemen aynı şekilde bitti:

uygulama / bootstrap.php bir başlatma çağrısıdır:

Kohana::init(array(
  'base_url'   => '/',
  'index_file' => FALSE // This removes the index.php from urls
));

Bu üretilen tüm adresler gelen index.php kaldırır. / Düzenlemek herhangi Kohana sınıf sokmanıza gerek yok.

Eğer. Htaccess dosyasını kullanmak gerekir unutmayın

Birkaç dakika dışında Kohana 3 ile oynadı değil.

Kohana 2 boş dizeye olarak ayarlayabilirsiniz bir yapılandırma var

$config['index_page'] = '';

Yarına kadar bu için sağlam bir cevap yoksa ben onu sormak böylece benim co-işçi biri Kohana 3 geliştirme ekibinin üzerinde. > Uri (), sırayla Rota sınıfından olan değerleri almak hangi - form.php hızlı bir bakış eylem için NULL değeri İsteme değerini alacak :: örneği () gösterir. Muhtemelen sadece burada ayarlanmış oluyor ne olduğunu görmek için Yönlendirme nesnelleştirilmesi üzerinden geri izleme tarafından cevap bulabiliriz. Bahsettiğim gibi Aksi takdirde, yarın benim astı soracaktır.

Casper'ın tepki ek olarak, burada (example.htaccess adlandırıldı) varsayılan KO3. Htaccess url yeniden yazma sağlayan bir dosyadır.

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /kohana/

# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]