@inner

2015-09-02 14 views
11

gibi Phoenix ek düzeni değişkenleri Düzeni için @inner gibi düzeni parametrelerini eklemek istiyorum. Örneğin <title>@title</title> için @title ve tek tek sayfalar için javascript için bir alan. @inner

window.onload = function() { 
    @onload_js 
} 

Bunlar

düzeni ayarlanır, bu yüzden en iyi yolu Phoenix bu işlemek için emin değilim. Teşekkürler: D.

sayfa başlığı için

cevap

21

, basitçe denetleyicisinden üzerinden bir değer iletebilirsiniz:

def edit(conn, params) do 
    render(conn, "edit.html", page_title: "Edit The Thing") 
end 

<head> 
    <title><%= assigns[:page_title] || "Default Title" %></title> 
</head> 

Not bu kullandığı assigns[:page_title] yerine @page_title veya :page_title anahtar atar mevcut değilse onlar hata gibi assigns.page_title . şablonları (komut örneği) render_existing/3 yoktur dahil İçin


.

uygulama düzeni görünümleri dinamik başkanı komut etiketleri bir bölümünü oluşturmasına imkan tanır durum düşünün:

belgeleri, bu yüzden kolaylık olması açısından burada kopyalamanızın istenen olanlarla benzer bir örnek verir döküman. Bazı görüşler, bazı senaryoları değil, bazı komutları enjekte etmek isteyebilir.

def render("scripts.html", _assigns) do 
    "<script src="...">" 
end 

:

<head> 
    <%= render_existing view_module(@conn), "scripts.html", assigns %> 
</head> 
Sonra @inner görünümü için modül veya yani işlevi doğrudan uygulayarak önceden derlenmiş şablonunda da komut dosyaları sunmak için karar verebilir Önceden derlenmiş bir şablonu kullanmak için, oluşturulmasını istediğiniz karşılık gelen görünüm için şablonlar dizininde bir scripts.html.eex dosyası oluşturun. Örneğin, UserView için, web/templates/user/dizininde scripts.html.eex dosyasını oluşturun.

+0

İnanılmaz! Açıklama için teşekkürler. Bunu anlamaya çok yardımcı oldu. – rockerBOO

+0

Bu, ancak çok fazla sayfaya özel meta veri eklemek istiyorsanız çalışır. Denetleyici yöntemleriniz çabuk dağınıklık olur! Artı kontrolörler zaten iş mantığı için olmalıdır. Burada açıklandığı gibi ** render_existing/2 ** işlevini kullanmanızı öneririz (http://blog.danielberkompas.com/2016/01/28/seo-tags-in-phoenix.html) –

İlgili konular