SORU
23 ŞUBAT 2009, PAZARTESİ


Nasıl 'Merhaba Dünya' Management modülünde bir basit oluşturmak için?

Nasıl aşağıdaki Profesyonel olarak gerçekleştirmek olabilir?

  • "Merhaba" mesajı denetleyicisi/view/model bir yaklaşım kullanarak. Dünya bir görüntü Eğer http://example.com/myController gidersem dize gösterecek kadar 'Merhaba'. Dünya Benim web sitesi (örneğin, üstbilgi, altbilgi, vb.) şablon içinde bu dizeyi göstermek için güçlü olmak bir bonus olacak.

  • Nasıl ekleyebilirim bir yöntem bu denetleyicisi (veya yeni bir kumanda gerekiyorsa), hangi etkileşim modeli ve gerçekleştirir sorgu Select * FROM articles where id='10' ve döner satır içeren sütun id, title, content) denetleyicisi? Ve kontrol birimi bu satır ekranı olan bir görünümü vardır, kullanın. http://example.com/myController/show_row (veya benzeri) o yüzden bir görünüm içinde satır görüntüler. (Süslü, sadece echo $row->id; ya da benzer bir şey olması gerek çalışmaya devam eder.)

Profesyonel kod yapısı hakkında başka bilgiler de çok yararlı olacaktır.

CEVAP
26 ŞUBAT 2009, PERŞEMBE


Birincisi ve en önemlisi, ben çok PDF/E-Book from PHP Architect satın öneririz. US$20, ama "Burada Profesyonel işler" bulmak mümkün oldum kaynak. nasıl tek basittir Ayrıca Magento tutorials at my own website yazmaya başladım.

Bir seçim var, ve deneyimli bir programcı değil ya da deneyimli bir programcı erişimi yok (ideal PHP . eğer ikinci, ^em>veJava),başka bir sepeti seçin. Profesyonel iyi tasarlanmış, ama diğer programcılar üstüne modüller inşa ettiği bir alışveriş sepeti çözüm olmak için tasarlandı. Kolayca çok akıllı ama programcı olmayan insanlar tarafından anlaşılması için tasarlandı.

Üçüncü olarak, Profesyonel MVC, , *, CakePHP, *CodeIgniterDjango42 vb çok farklı. PHP geliştiricileri bu günlerde popüler olan model MVC. Zend modeline dayalı olduğunu düşünüyorum, ve her şey OOP gibi çok Java. Varikidenetleyicileri hakkında endişelenmenize gerek yok. Modül/denetleyicisi, MVC denetleyicisi sonra frontName.

Dördüncü olarak, yerleşik kendisi Profesyonel uygulama aynı modül sistemini kullanarak kullanarak olacak, çekirdek kod kurcalarken öğrenmenin yararlı bir taktiktir. Ayrıca, Profesyonel ile yapıyor olacak ne vargeçersiz kılmamevcut sınıflar. Burada bakıyorumoluşturmayeni işlevsellik, geçersiz. Kod örnekleri de oraya bakarken bunu göz önünde bulundurun.

İlk soru ile, Denetleyici/yönlendirici belirli bir URL için yanıt vermek nasıl kurulum göstererek başlayacağım. Bu küçük bir roman olacak. Bu model ile ilgili konular şablonu/için zaman sonra olabilir, ama şimdi, bilmiyorum. Ancak, kısaca SQL soru konuşacağım.

Profesyonel EAV veritabanı mimarisi kullanır. Mümkün olduğunda, Sistem bilgisi sağlar model nesneleri kullanmayı deneyin. Orada SQL tablolarda, ama en iyi veri ham SQL sorguları kullanarak kapma düşünmemek zor biliyorum, yoksa aklını kaçırırsın.

Son Yasal Uyarı. Yaklaşık iki ya da üç hafta boyunca Profesyonel kullanıyorum, böyle biline. Bu kafamın içinde bu Yığın Taşması yardımcı olduğu gibi çok iyi bir egzersizdir.

Bir modül oluşturun

Tüm eklemeler ve Profesyonel özelleştirmeler modülleri üzerinden yapılır. Yani, yapmanız gereken ilk şey yeni bir modül oluşturun. Aşağıdaki gibi app/modules adlı bir XML dosyası oluşturun

cd /path/to/store/app
touch etc/modules/MyCompanyName_HelloWorld.xml
<?xml version="1.0"?>
<config>
     <modules>
        <MyCompanyName_HelloWorld>
            <active>true</active>
            <codePool>local</codePool>
        </MyCompanyName_HelloWorld>
     </modules>
</config>

MyCompanyName değişiklikleriniz için benzersiz bir ad, şirketinizin adı olmak zorunda değil, ama tavsiye sözleşmesi benim profesyonel. HelloWorld modül ismi.

Uygulama önbelleğini temizleyin

Modül dosyası yerine, Profesyonel haber (ve işimizi kontrol) ihtiyacımız olacak. Admin uygulama

  1. Sistemi->Önbellek Yönetimi
  2. Tümünü Seç Önbellek menüsünden Yenile
  3. Tıklatın Önbellek Ayarları Kaydet

Şimdi, Management modülü hakkında bildiğinden emin olun

  1. Sistemi->Yapılandırma
  2. Gelişmiş ' İ Tıklatın
  3. "Devre dışı bırak modülleri çıkış" kutu ayarı, yeni modülü adında bir bakın"" . MyCompanyName_HelloWorld içinde

Eğer performansını yavaşlatmak ile yaşayabilir,/öğrenme geliştirirken uygulama önbelleği devre dışı bırakmak isteyebilirsiniz. Hiçbir şey daha sinir bozucu sonra önbelleği dışarı açık unutuyor ve değişiklik görünmüyor neden merak ediyor.

Kurulum dizin yapısı

Daha sonra, modül için bir dizin yapısı kurulumu için ihtiyacımız olacak. Tüm bu dizinleri ihtiyacın olmayacak, ama bunu şimdi ayarı tüm zararı yok.

mkdir -p app/code/local/MyCompanyName/HelloWorld
mkdir -p app/code/local/MyCompanyName/HelloWorld/Block
mkdir -p app/code/local/MyCompanyName/HelloWorld/controllers
mkdir -p app/code/local/MyCompanyName/HelloWorld/Model
mkdir -p app/code/local/MyCompanyName/HelloWorld/Helper
mkdir -p app/code/local/MyCompanyName/HelloWorld/etc
mkdir -p app/code/local/MyCompanyName/HelloWorld/sql

Ve bir yapılandırma dosyası ekleyin

touch app/code/local/MyCompanyName/HelloWorld/etc/config.xml

ve yapılandırma dosyası içinde, eklemek aslında bir "" yapılandırma. boş olan şu,

<?xml version="1.0"?>
<config>
    <modules>
        <mycompanyname_helloworld>
            <version>
                0.1.0
            </version>
        </mycompanyname_helloworld>
    </modules>
</config>

İşleri basite indirgemek, bu yapılandırma dosyası Profesyonel ne çalıştırmak istiyorsan söyleyeyim.

Yönlendirici kurma

Bir sonraki Kur için modülün yönlendirici ihtiyacımız var. Bu sistem şeklinde herhangi bir URL işleme olduğumuzu bildiririz

http://example.com/magento/index.php/helloworld

Bu nedenle, yapılandırma dosyasında, aşağıdaki bölüme ekleyin.

<config>
<!-- ... -->
    <frontend>
        <routers>
            <!-- the <helloworld> tagname appears to be arbitrary, but by
            convention is should match the frontName tag below-->
            <helloworld>
                <use>standard</use>
                <args>
                    <module>MyCompanyName_HelloWorld</module>
                    <frontName>helloworld</frontName>
                </args>
            </helloworld>
        </routers>
    </frontend>
<!-- ... -->
</config>

Yani diyorsun "herhangi bir Hello world of frontName ile URL ...

http://example.com/magento/index.php/helloworld

frontName denetleyicisi MyCompanyName_HelloWorld kullanmalıdır".

Değerini atamak sayfa üzerinde yük zaman, yer, yukarıdaki yapılandırma ile, bir 404 sayfası alırsınız. Bizim denetleyicisi için bir dosya oluşturulur değiliz çünkü. Şimdi bunu yapalım.

touch app/code/local/MyCompanyName/HelloWorld/controllers/IndexController.php

Şimdi sayfayı yüklemeyi deneyin. İlerleme! Yerine 404, PHP/Profesyonel bir özel durum elde edersiniz

Controller file was loaded but class does not exist

Bu yüzden, dosyayı açmak verin ve aşağıdaki kodu yapıştırın. Sınıfın adı yönlendirici verdiğiniz isim dayanmalıdır.

class MyCompanyName_HelloWorld_IndexController extends Mage_Core_Controller_Front_Action{
    public function indexAction(){
        echo "We're echoing just to show that this is what's called, normally you'd have some kind of redirect going on here";
    }
}

Sadece kur yaptığımızı modülü/frontName denetleyicisi. Bu varsayılan kumanda ve modülü varsayılan eylemdir. Eğer denetleyicileri veya eylemler eklemek istiyorsanız, Profesyonel bir URL ağacı ilk bölümü her zaman bu şekilde 33 ** gidecekler değişmez olduğunu hatırlamak zorunda

Eğer bu url eşleştirmek istiyorsanız

http://example.com/magento/index.php/helloworld/foo

Bu şekilde yapabileceğiniz bir FooController, olması gerekir :

touch app/code/local/MyCompanyName/HelloWorld/controllers/FooController.php
class MyCompanyName_HelloWorld_FooController extends Mage_Core_Controller_Front_Action{
    public function indexAction(){
        echo 'Foo Index Action';
    }

    public function addAction(){
        echo 'Foo add Action';
    }

    public function deleteAction(){
        echo 'Foo delete Action';
    }
}

Lütfen varsayılan denetleyici ana kontrol ve varsayılan eylem ındexaction tarafından örtülü ama eğer bir şey sonra gel, eğer açık olmak zorunda olduğunu unutmayın. http://example.com/magento/index.php/helloworld/foo denetleyici FooController ve eylem ındexaction ve ana kontrol eylem fooAction DEĞİL maç olacak. Eğer bir fooAction sahip olmak istiyorsanız, denetleyici ana kontrol size daha sonra açıkça bu şekilde bu kumanda aramak zorunda : Url ikinci kısmıdır ve her zaman controllerName olacak çünkü http://example.com/magento/index.php/helloworld/index/foo. Bu davranış Çalışabilir Çerçevesinde Profesyonel paketlenmiş bir miras var.

Şimdi aşağıdaki URL çarpıp yankı tabloların sonuçlarını görmek gerekir

http://example.com/magento/index.php/helloworld/foo
http://example.com/magento/index.php/helloworld/foo/add
http://example.com/magento/index.php/helloworld/foo/delete

Yani, Profesyonel bir denetleyicisine gönderir konusunda temel bir fikir verecektir. Buradan mevcut Profesyonel dürten modelleri ve şablonu/düzen sistem nasıl kullanılması gerektiğini görmek için denetleyici sınıfları tavsiye ederim.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Cole Rolland

    Cole Rolland

    23 Kasım 2008
  • Gali B

    Gali B

    1 EYLÜL 2006
  • MrMimoB

    MrMimoB

    11 NİSAN 2011