2015-09-24 10 views
7

यदि मैं उन कार्यों के साथ एक मॉड्यूल बनाना चाहता हूं जिसे प्रत्येक टेम्पलेट में एक्सेस किया जा सकता है और जिसमें मैं दृश्य के सभी कार्यों (राउटर पथ और आदि का उपयोग करके टैग बनाना) का उपयोग कर सकता हूं, तो इसे प्राप्त करने का सबसे अच्छा तरीका क्या है?फीनिक्स फ्रेमवर्क में वैश्विक दृश्य कैसे बनाएं?

बस शब्दों में कहें, मैं वैश्विक दृष्टिकोण कैसे बना सकता हूं?

उत्तर

15

आप एक मॉड्यूल (मैं इसे सहायकों निर्देशिका में डाल दिया था) उस में अपने कार्य करता है कि परिभाषित कर सकते हैं:

def view do 
    quote do 
     use Phoenix.View, root: "web/templates" 

     # Import convenience functions from controllers 
     import Phoenix.Controller, only: [get_csrf_token: 0, get_flash: 2, view_module: 1] 

     # Import URL helpers from the router 
     import MyApp.Router.Helpers 

     # Use all HTML functionality (forms, tags, etc) 
     use Phoenix.HTML 

     # Import custom helpers 
     import MyApp.SomeHelper 
    end 
    end 
:

defmodule MyApp.SomeHelper do 

    def some_function do 
    #... 
    end 

end 

फिर आप view समारोह के तहत MyApp.Web में शामिल कर सकते

some_function फ़ंक्शन अब सभी टेम्पलेट्स में उपलब्ध होगा।

+0

मुझे 'MyApp.Router.Helpers' भी आयात करना होगा और इस' MyApp.SomeHelper' में 'फीनिक्स.एचटीएमएल' का उपयोग करना होगा, सभी दृश्य कार्यों का उपयोग करने में सक्षम होने के लिए, क्या मैं नहीं? – JustMichael

+0

यह वास्तव में इस पर निर्भर करता है कि आपके कार्य क्या दिखते हैं। यदि वे 'MyApp.Router.Helpers' और' फीनिक्स.एचटीएमएल 'से फ़ंक्शंस का उपयोग करते हैं तो आप करेंगे। या आप लंबे नाम का उपयोग कर सकते हैं। जैसे 'MyApp.Router.Helpers.user_path (conn,: अनुक्रमणिका)' – Gazler

+0

मैं देखता हूं, बहुत बहुत धन्यवाद – JustMichael

संबंधित मुद्दे