পিএইচপি var_dump () এর মতো স্মার্টে চলকগুলি কীভাবে ডিবাগ করবেন?


164

আমার একটি টেমপ্লেটের অভ্যন্তরে কিছু পরিবর্তনশীল রয়েছে এবং আমি জানি না যে আমি সেগুলি কোথায় নিযুক্ত করেছি। একটি নির্দিষ্ট ভেরিয়েবলের ভিতরে আমার কী আছে তা জানতে হবে; উদাহরণস্বরূপ, বলুন আমার কাছে স্মার্ট বলে একটি পরিবর্তনশীল রয়েছে member। আমি চেষ্টা করেছি {debug}কিন্তু এটি কার্যকর হয়নি এবং কোনও পপআপ দেখানো হয়নি।

var_dump()টেমপ্লেটের অভ্যন্তরের মতো কিছু ব্যবহার করে আমি কীভাবে স্মার্ট ভেরিয়েবল আউটপুট / ডিবাগ করতে পারি ?

উত্তর:


330

আপনি {php}ট্যাগ ব্যবহার করতে পারেন

পদ্ধতি 1 (স্মার্ট 3.1 বা তার পরে কাজ করবে না):

{php}

$var =
$this->get_template_vars('var');
var_dump($var);

{/php}

পদ্ধতি 2:

{$var|@print_r}

পদ্ধতি 3:

{$var|@var_dump}

পিএইচপি ট্যাগগুলিতে অবলম্বন করা ভাল অনুশীলন নয় এবং আদর্শভাবে সেগুলি সুরক্ষার কারণে কোনওভাবেই অক্ষম করা উচিত। @ দেবেগ_প্রিন্ট_ভার (ক্রিসের উত্তর দেখুন) অনেক ভাল সমাধান ition
23

1
স্মার্টের সর্বশেষতম সংস্করণ {php}...{/php}ট্যাগগুলি অক্ষম করার সাথে , পদ্ধতি 2 বা 3 আরও ভাল বিকল্প।
লুক স্টিভেনসন

1
আপনি যদি এটি <p>> ট্যাগ দিয়ে ঘিরে থাকেন তবে আউটপুট আরও ভাল দেখাচ্ছে। উপরের পদ্ধতিগুলি সেরা।
আলেকজান্ডার ক্লদ্ট

2
শেষের দিকে অতিরিক্ত প্রতিধ্বনি এড়ানোর জন্য এটিকে আউটপুটটি স্মার্টে ফিরিয়ে দেওয়ার জন্য মুদ্রণ_আর () এ অতিরিক্ত প্যারাম যুক্ত করুন: {$ var | @print_r: সত্য}
ivanhoe

120

এই কাজ করা উচিত:

{$var|@print_r}

অথবা

{$var|@var_dump}

@ অ্যারির জন্য পুরো জিনিসটির বিপরীতে স্মার্টটি চালানোর জন্য প্রয়োজনীয়, অন্যথায় এটি প্রতিটি উপাদানটির জন্য এটি করে।


8
অনেক ভাল তারপর বেছে নেওয়া উত্তর।
ড্যামিয়েন

তাহলে উত্তরের নির্বাচিত উত্তর? srsly? নির্বাচিত উত্তরে সেগুলির সমাধানগুলিও রয়েছে তবে এটি পুরানো স্মার্ট সংস্করণগুলির জন্য আরও একটি রয়েছে, সুতরাং আপনি কীভাবে বলতে পারেন যে এটি নির্বাচিত একটি এক্সডি থেকে ভাল
অলিয়িক্স

24

এর মূল্য কী, আপনার ভেরিয়েবলের জন্য {$varname|@debug_print_var}একটি- var_dump()আউটপুট পেতে আপনি এটি করতে পারেন ।


কখনও কখনও আপনি নিশ্চিত পরিবর্তনশীল এবং অনেক বার না @print_rএবং @var_dumpনা কাজ (উদাহরণস্বরূপ এক্স-কার্টে) করেনি, কিন্তু @debug_print_varআউটপুট ছিল না।
skobaljic

অনেক ধন্যবাদ! আপনার উত্তরটিই আমাকে গঠন করে।
টানা

10

আপনার .tpl এ কেবলমাত্র {ডিবাগ use ব্যবহার করুন এবং আপনার উত্সকোডটি দেখুন


3
খুশী হলাম। এটি আসলে আমার জন্য একটি পপ-আপ উইন্ডো তৈরি করেছে, সুতরাং আমাকে উত্সটি দেখার দরকার নেই। যদিও আমার পপ-আপ ব্লকারকে অক্ষম করতে হয়েছিল।
হোবো


5

স্মার্ট সেশন দিয়ে চেষ্টা করে দেখুন:

{$smarty.session|@debug_print_var}

অথবা

{$smarty.session|@print_r}

আপনার আউটপুট সুন্দরী করতে, এটি <pre> </pre>ট্যাগের মধ্যে ব্যবহার করুন


2

আপনি যদি কিছু সুন্দর চান তবে আমি পরামর্শ দেব

{"<?php\n\$data =\n"|@cat:{$yourvariable|@var_export:true|@cat:";\n?>"}|@highlight_string:true}

শুধু প্রতিস্থাপন yourvariable আপনার পরিবর্তনশীল দ্বারা


1

এটি ব্যবহার করে .... $debugging স্মার্টে সত্যে সেট করুন ।


নিশ্চিত যে আমি এটি জানি, তবে মূল পিএইচপি ফাইলগুলি না
বাড়িয়েই

1

প্রেস্ট্যাশপ 1.6.x এ স্মার্টে ডিবাগ করতে:

{ddd($variable)} -> debug and die

{ppp($variable)} -> debug only

একটি অনর্থক ব্যবহারযোগ্য ডিবাগ ট্যাগ:

{debug}


0

স্মার্টে সেখানে মডিফায়ার নির্মিত হয় আপনি এটি ব্যবহার করে |(একক পাইপলাইন অপারেটর) ব্যবহার করতে পারেন । এই {$varname|@print_r}যেমন মান হিসাবে মুদ্রণ করবেprint_r($php_variable)



0

{$variable|@debug_print_var nofilter}এবং আপনাকে <pre>ট্যাগ যুক্ত করার দরকার নেই

{$variable|var_dump}আপনাকে আরও দেখায় (তবে আরও খারাপ ফর্ম্যাটিং) কারণ debug_print_varঅবজেক্টে প্রাইভেট ভেরিয়েবল না দেখানো হয়!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.