1. Codeigniter Framework (CodeIgniter Framework Tutorial) Basic Tutorials of Codeigniter Framework
  2. কোডইগনাইটার ইনস্টল (CodeIgniter Install Tutorial in Bangla)
  3. How to create First Application in CodeIgniter
  4. কোডইগনাইটারের URL স্ট্রাকচার (structure of codeigniter)
  5. Codeigniter দিয়ে query করা এবং result দেখা (CI Query & Show Results)
  6. Database থেকে Data দেখা (CI Fetch Data from Database)
  7. Model তৈরী এবং কন্ট্রোলারে Access (Create Model & Access in Controller)
  8. Codeigniter দিয়ে ডেটাবেসে data ঢুকানো (CodeIgniter Insert Data to Database)
  9. Form দিয়ে ডেটাবেসের data সম্পাদনা (Data Edit in Database Via Form | Codeigniter Tutorials)
  10. ডেটাবেসের data delete (Data Delete in Database | Codeigniter Tutorials) | SP Foundationbd
  11. Form Validation টিউটোরিয়াল (CI Form Validation Tutorial | Codeigniter Tutorials) | SP Foundation
  12. Form validation tutorials (CI Form Validation Tutorial) - আরও উন্নত validation
  13. Codeigniter bootstrap integration এবং best প্রাকটিস | SP Foundationbd
  14. Codeigniter পেজিনেশন Tutorials (CodeIgniter Pagination Tutorial) | SP Foundationbd
  15. কোডইগনাইটার pagination tutorials (CodeIgniter Pagination Tutorial) - ২য় পদ্ধতিতে pagination
  16. Codeigniter সেশন Management (Session Management CodeIgniter) part one
  17. Codeigniter session ম্যানেজমেন্ট (Session Management CodeIgniter) - সেশন ড্রাইভার part two
  18. কোডইগনাইটার file আপলোড (CodeIgniter File Upload)
  19. কোডইগনাইটার Ajax টিউটোরিয়াল (CodeIgniter Ajax Tutorial) | SP Foundationbd
  20. কোডইগনাইটার URI রাউটিং টিউটোরিয়াল (CodeIgniter URI Routing Bangla Tutorials) | SP Foundationbd
  21. কোডইগনাইটারে একসাথে একাধিক ডেটাবেস ব্যবহার (Use Multiple Database Together in CodeIgniter)

কোডইগনাইটার URI রাউটিং টিউটোরিয়াল (CodeIgniter URI Routing Bangla Tutorials) | SP Foundationbd

আমরা সবাই জানি কোডইগনাইটারের URI কিভাবে কাজ করে। প্রথমে class এরপর মেথড এবং এরপর প্যারামিটার যেমন www. spfoundationbd.com/tutorial/php_tut/1 এখানে "tutorial" হল ক্লাসের নাম এবং method হল "php_tut" এরপর "1" হল প্যারামিটার। এরপর আরও প্যারামিটার থাকতে পারে, সব স্ল্যাশ দিয়ে দিতে পারেন। এভাবে ব্যাসিকালি কোডইগনাইটারের URI কাজ করে। তবে আপনি চাইলে ভিন্ন রকম করতে পারেন। যেমন কেউ যদি www. spfoundationbd.com/test/tutorial/php_tut/1 এই URI তে যায় তখন তাকে আসলে www. spfoundationbd.com/tutorial/php_tut/1 এখানে পাঠাবেন। ব্রাউজারে ঐটাই থাকবে যেটা সে দিয়েছে অর্থ্যাৎ www. spfoundationbd.com/test/tutorial/php_tut/1 এটা কিন্তু ব্যাকগ্রাউন্ডে আসলে কাজ করবে অন্য ক্লাস এবং অন্য মেথড। মুলত নিরাপত্তার জন্য এভাবে URI রিম্যাপ করা হয়। এতে করে আপনি মুল কোডে ক্লাস, মেথড ইত্যাদির যা নাম দিয়েছেন সেটা কেউ দেখতে পারবেনা। আরও অন্যান্য কারন আছে।

রাউটিং এর সকল কাজ  application/config/routes.php এই ফাইলে করতে হবে। এই ফাইলে নিচে যেকোন URI কে নিজের মত করে define করে নিতে পারবেন। নিচে কিছু উদাহরন দেয়া হল

উদাহরন : ধরুন আমি চাই কেউ "http://localhost/ spfoundationbd /index.php/create_member" এই URL দিলে users কন্ট্রোলারের create মেথডে যাবে। তাহলে routes.php ফাইলের একদম শেষে দিয়ে দিন নিচের মত। নিচে $route অ্যারের ইনডেক্স থাকবে url যেটা দেখতে চান সেটা আর এই ইনডেক্সের মান হবে যে ক্লাস/মেথডে পাঠাতে চান সেটা। যেমন

1.$route['create_member'] = 'users/create';

এবার "http://localhost/ spfoundationbd /index.php/create_member" ব্রাউজার দিয়ে এই ঠিকানায় যান এবং দেখুন "http://localhost/ spfoundationbd /index.php/users/create" গেলে (routing এর আগেযা আসত ঠিক একই জিনিস রাউটিং এর পরেও আসবে যদিও url আলাদা।

আমি সব উদাহরন locally দেখাচ্ছি তাই সব url "http://localhost/ spfoundationbd /index.php/" এভাবে দেখবেন। লাইভে করলে শুধু http://localhost/ spfoundationbd /index.php/ এর স্থলে এরুপ http://example.com/index.php/ হবে (example এর জায়গায় আপনার ডোমেইন)

উদাহরন : edit লিংক পরিবর্তন করব। ধরুন আমার এডিট লিংকগুলি এরকম "http://localhost/ spfoundationbd /index.php/users/edit/14" আর আমি বানাবো "http://localhost/ spfoundationbd /index.php/member/14/edit" তাহলে আমার রাউটিং হবে নিচের মত

1.$route['member/(:num)/edit'] = 'users/edit/$1';

অর্থ্যাৎ  member/ এরপর যেকোন সংখ্যা আবার স্লাশ তারপর edit এভাবে url দিলে request যাবে users কন্ট্রোলারের edit মেথডে। (:num) দিয়ে যেকোন সংখ্যা বোঝানো হয়েছে। আর $1 দিয়ে সংখ্যাটি বোঝানো হয়েছে যেটা (:num) থাকবে। codeigniter নিজে থেকে এই (:num), $1 কে রেগুলার expression দিয়ে পরিবর্তন করে সঠিক url এবং সঠিক class/method চিনে নেয়। সুতরাং ডাইনামিক url কিভাবে রাউটিং করা যায় সেটা দেখানো হল। $1 দিয়ে বুঝানো হচ্ছে প্রথম প্যারামিটারটি (সংখ্যাটি) যদি আরও একটি প্যারামিটার থাকত তখন দ্বিতীয়টির জন্য $2 এটা দিতাম। ৩টি প্যারামিটার থাকলে সেটার জন্য $3 দিতাম এভাবে...

এবার

"http://localhost/ spfoundationbd /index.php/member/1/edit"

"http://localhost/ spfoundationbd /index.php/member/2/edit" ইত্যাদি url যান এবং দেখে নিন ব্যাকগ্রাউন্ডে কাজ হবে

যথাক্রমে

"http://localhost/ spfoundationbd /index.php/users/edit/1" এবং

"http://localhost/webc spfoundationbd oach/index.php/users/edit/2"

এভাবে routing এর পর অবশ্যই ভিউ ফাইলগুলিতে url সমূহ পরিবর্তন করে আসতে হবে যদি আগের url থেকে থাকে। যেমন আমি এই উদাহরনগুলি এখানে শেষ থেকে ২য় প্রজেক্টটিতে পরীক্ষা করেছি এবং সেখানকার ভিউ ফাইলে (views/users.php) লিংক ছিল এরকম

1.<a  href="<?php echo site_url('users/edit') . '/' . $user['id']; ?>"><span class="glyphicon glyphicon-edit" aria-hidden="true"></span></a>

 আর routing এর পর করেছি এরকম

1.<a  href="<?php echo site_url('member/'.$user['id'].'/edit') ; ?>"><span class="glyphicon glyphicon-edit" aria-hidden="true"></span></a>

 ** আরেকটা শব্দ আছে তাহল (:any). এটা দিয়ে যেকোন শ্বদ বুঝায়। সংখ্যাও হতে পারে কিংবা যেকোন লেখাও হতে পারে। উপরের উদাহরনে (:num) এর জায়গায় যদি (:any) দেন তাহলে url সংখ্যা কিংবা যেকোন স্ট্রিং থাকলেও সেটাকে রিম্যাপ করবে।

সরাসরি রেগুলার এক্সপ্রেশন ব্যবহার

আপনি চাইলে সরাসরি রেগুলার expression ব্যবহার করে রাউটিং ব্যবহার করতে পারেন। যেকোন বৈধ রেগুলার এক্সপ্রেশন ব্যবহার করা যেতে পারে। যেমন

1.$route['member/(:num)/store/([0-9])'] = 'users/shop/$1/$2';

এটা url এর প্রথম অংশে (segment) "member" এরপর স্ল্যাশ (/ চিহ্ন) এরপর যেকোন সংখ্যা আবার স্ল্যাশ (/ চিহ্ন) এবং তারপর আবার কোন সংখ্যা পেলে সেটাকে route করবে (রিম্যাপ করবে কিংবা পাঠাবে) "users" কন্ট্রোলারের "shop" মেথডে এবং প্রথম প্যারামিটারে যাবে "member" এর পর দেয়া সংখ্যাটি এবা পরের প্যারামিটারটিতে যাবে "store" এর পরে থাকা সংখ্যাটি। সুতরাং

http://localhost/ spfoundationbd /index.php/member/14/store/2 এরুপ থাকলে

Execute হবে নিচের মত

http://localhost/ spfoundationbd /index.php/users/shop/14/2

 উটিংটিতে দেখুন আমি সরাসরি একটি রেগুলার এক্সপ্রেশন ব্যবহার করেছি ([0-9]) এটার মানে হল থেকে পর্যন্ত যেকোন সংখ্যা।

routes.php ফাইল থেকে ডিফল্ট কন্ট্রোলার সেট করা যায় এটা আগেও আলোচনা করেছি। সাইটের হোম পেজে গেেল বাই ডিফল্ট কোন কন্ট্রোলার এক্সিকিউট হবে সেটা ঠিক করতে পারেন। যেমন

1.$route['default_controller'] = 'users';

এখানে default controller সেট করেছি "users" ফলে যখন homepage (http://localhost/ spfoundationbd /index.php) এ্ যাবে তখন আসলে "users" কন্ট্রোলার লোড হবে। ইচ্ছে করলে অন্য যেকোন controller দিতে পারেন। codeigniter ইনস্টলের পর এখানে "welcome" কন্ট্রোলার থাকে।

কন্ট্রোলার এবং মেথডের আন্ডারস্কোর (_) কে ড্যাশে রপান্তর

codeigniter রাউটিং একটি অপশন আছে নিচের মত। এটার মান FALSE থাকে এবং আপনি যদি TRUE করে দেন তাহলে URL আন্ডারস্কোর এর স্থলে ড্যাশ চিহ্ন দেখাবে।

1.$route['translate_uri_dashes'] = FALSE;

এটা খুব উপকারী কেননা সাধারনত বড় নামের controller এবং method আমরা আন্ডারস্কোর দিয়ে কোডে লিখে থাকি যেমন কিছু মেথডের নাম "register_user" বা "user_performance_report" ইত্যাদি। এসব মেথডের নাম আন্ডারস্কোর দিয়ে url থাকলে দেখতে খারাপ লাগে তাই এগুলিকে ড্যাশে রুপান্তর করতে পারেন উপরে $route index "translate_uri_dashes" এর মান TRUE করে দিয়ে। এখন URL দেখাবে এরুপ

http://localhost/ spfoundationbd /user/register-user (FALSE দিলে দেখাত এরুপ http://localhost/ spfoundationbd /user/register_user)

http://localhost/ spfoundationbd /performance-report/user-performance-report (FALSE দিলে দেখাত এরুপ http://localhost/ spfoundationbd /performance_report/user_performance_report)