2015-02-13 7 views
19

मैं लैरवेल एप्लिकेशन पर काम कर रहा हूं और मेरी कंट्रोलर php फ़ाइलों को ठीक से डिबग कर सकता हूं, लेकिन आईडी को blade.php फ़ाइलों को डीबग करना भी पसंद है। मेरे वर्तमान सेटअप Ive के बाद सभी जेटब्रेन ने लैरावेल के लिए सेटिंग्स की सिफारिश की, (http://bit.ly/1B64Dgx) लेकिन यह अभी भी मुझे blade.php फ़ाइलों में ब्रेकपॉइंट्स सेट करने की अनुमति नहीं दे रहा है।PHPstorm - blade.php फ़ाइलों में ब्रेकपॉइंट्स सेट करने में असमर्थ

मुझे क्या याद आ रहा है पर कोई विचार?

धन्यवाद,

डॉन

+1

किस फ़ाइल में - मूल '.blade.php' या संकलित ब्लेड फ़ाइल? आप निश्चित रूप से इसे मूल में सेट नहीं कर सकते - क्योंकि इसे निष्पादित नहीं किया गया है। – LazyOne

+0

तेज प्रतिक्रिया के लिए धन्यवाद, मुझे नहीं पता था कि इसे संकलित और अलग से उत्पन्न किया गया था। हां, मैं मूल blade.php फ़ाइल का जिक्र कर रहा हूं। तब संकलित फ़ाइलों में PHP चर चर को डीबग करने का सबसे अच्छा तरीका क्या है? –

+1

मुझे लगता है कि PhpStorm में वास्तविक संकलित ब्लेड फ़ाइलों को डिबग करने के साथ कुछ समस्याएं हैं (जिस तरह से फ़ाइलों को नामित किया गया है और आईडीई कैसे काम करता है: ऐसी फ़ाइलों में कोई एक्सटेंशन नहीं है और आईडीई उन्हें 'PHP फाइल' फ़ाइल प्रकार से संबद्ध करने में असमर्थ है ब्रेकपॉइंट्स आदि रखने में सक्षम)। कृपया इस टिकट का संदर्भ लें: https://youtrack.jetbrains.com/issue/WI-25835 – LazyOne

उत्तर

33

बहुत अच्छी तरह से काम करता है अपने ब्लेड फ़ाइल में एक

<?php xdebug_break(); ?> 

लाना। मेरे परीक्षणों में भी, कुछ मामलों में PHPstorm अगले PHP कथन पर कूदता है।

ऐसा क्यों काम करता है:

Laravel कैश फ़ोल्डर में एक सामान्य PHP फ़ाइल को ब्लेड फ़ाइल संसाधित करता है। लेकिन PHP कथन xdebug_break(); वहां स्थानांतरित कर दिया जाएगा और प्रोग्राम को उस स्थिति पर रोक दिया जाएगा, जिसे आप चाहते हैं (कैश फ़ाइल में)।

+1

वाह - मुझे बस इसका उपयोग करने का मौका मिला और यह बहुत अच्छा काम करता है - धन्यवाद एलेक्स –

+1

मैंने पाया कि यह चाल PHPstorm में भी .dtml फ़ाइलों को डीबग करने के लिए काम करती है। आपका बहुत बहुत धन्यवाद! – TryHarder

+0

यह वही चाल XDebug में काम करती है, जो किसी भी आईडीई का उपयोग करती है जो इसका समर्थन करती है। मैं इसे अल्ट्राएडिट स्टूडियो के साथ उपयोग कर रहा हूं, हालांकि इसे आपके पसंदीदा आईडीई में भी काम करना चाहिए, यहां तक ​​कि मेरे कम से कम पसंदीदा, ग्रहण। –

3

इस सवाल को बंद करने के लिए - phpstorm does not को पल में इस कार्यक्षमता का समर्थन। जेटब्रेन समर्थन द्वारा प्रदान किए गए एक काम को * .blade.php को आईडीई सेटिंग्स में PHP के तहत फ़ाइल प्रकार एसोसिएशन में जोड़ना था, हालांकि, यह अभी भी ऐसा करने के बाद मेरे लिए काम नहीं कर रहा था।

ऐसा लगता है कि वे, मेरे अनुरोध के जवाब में एक youtrack टिकट बनाया अगर youd इस पर काम करने के लिए कृपया वोट दें JetBrains प्रोत्साहित करना: यदि आप ब्लेड फाइलों पर breakpoints सक्षम करने के लिए आईडीई प्राप्त कर सकते हैं यहां तक ​​कि अगर youtrack.jetbrains.com/issue/WI-26476

2

, यह काम नहीं करेगा - लैरावेल ब्लेड फ़ाइल से एक PHP फ़ाइल लिखता है - यह वह फ़ाइल है जिसका उपयोग अंततः तब किया जाता है जब स्क्रिप्ट चलती है - ब्लेड फ़ाइल नहीं।

एक काम के आसपास

यह PHPStorm के लिए काम करता है - लेकिन कुछ इसी तरह अन्य IDEs में संभव हो सकता है।

लैरवेल (5) संग्रहित फ़ाइलों को भंडारण/ढांचे/विचारों के तहत संग्रहीत करता है। इन फ़ाइलों में यादृच्छिक जेनरेट किए गए फ़ाइल नाम हैं - इसलिए आप जो फ़ाइल चाहते हैं उसे ढूंढना मुश्किल हो सकता है। इन सभी अस्थायी फ़ाइलों को हटाने का एक आसान तरीका है और फिर उस पृष्ठ को रीफ्रेश करें जिसे आप डीबग करना चाहते हैं। एक नई फाइल बनाई जाएगी। PHPstorm में आप फ़ाइल पर राइट-क्लिक कर सकते हैं और फ़ाइल के एक्सटेंशन प्रकार का चयन कर सकते हैं। (अन्य आईडीई के बारे में निश्चित नहीं)

अब आप ब्रेकपॉइंट्स सेट करने में सक्षम होंगे। जाहिर है आपको ब्लेड फ़ाइल में बदलाव करने की आवश्यकता होगी - लेकिन कम से कम यह जानने में आपकी सहायता होगी कि क्या गलत है।

** अद्यतन: एलेक्स का समाधान आसान है! **

+0

ब्रेक पॉइंट सेट करना संभव नहीं हो सकता है क्योंकि उनके पास '.php' एक्सटेंशन नहीं है। यही कारण है कि मैंने इसके लिए एक पुल अनुरोध किया: https://github.com/laravel/framework/pull/10462 - कैश फ़ाइल नाम भी यादृच्छिक नहीं है - यह दृश्य फ़ाइल पथ का md5 हैश है। – Alex

0

मैंने एक बेहतर हैक तैयार किया, जो सशर्त डिबगिंग समर्थन की अनुमति देता है, ताकि आप शेष अनंत काल के लिए XDebug_break के साथ अटक न जाएं।

एकल पंक्ति निम्नानुसार फैली हुई है।

<?php if (\app\utils\DebugLogger::EnableForBlades ()) xdebug_break () ; ?> 

इस कथन में कुछ असामान्य विशेषताएं हैं।

  1. चूंकि ब्लेड फ़ाइलों में निर्देशों का उपयोग नहीं किया गया है, विधि का नाम, \ app \ utils \ DebugLogger :: EnableForBlades पूरी तरह योग्य है।
  2. चूंकि ब्लेड फ़ाइलों को सामान्य कोड अवरोधन तंत्र के लिए समर्थन की कमी नहीं होती है, इसलिए एक पंक्ति का विवरण ब्रेसिज़ से रहित है, और अर्धविराम से समाप्त होता है।

EnableForBlades एक स्थिर विधि है जो पर्यावरण परिवर्तनीय (.local.env में परिभाषित लोगों में से एक) से पूछताछ करता है, सही है कि वह चर सही पर मूल्यांकन करता है। अन्यथा, यह गलत है, और xdebug_break दबा दिया गया है।

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