PDA

View Full Version : سوال: کمک مشکله کلافه کننده با zend framework



cjcoax
یک شنبه 06 بهمن 1387, 17:20 عصر
سلام خدمته دوستانه عزيز،
چند وقتيه که من دارم رو يادگيريه zend framework کار ميکنم.
پيوسته با مشکل مواجه ميشام.
حتی برناميه hello world رو هم نميتونم بنويسم(با اينکه دقيقاً طبقه نمونه هايه که دارم مينويسم)
من ميخواستم تنظيمتم و برناممو بنويسم و کسی اگه ميتونه اشکالمو بگه.
اولاً directory strcture ام طبقه زيره:


\Htdocs


Index.php


.htaccess


Application\



Controllers\



Models\



Views\




Scripts\




Index\



تويه httpd.config يه apache هم

<Directory />


Options FollowSymLinks



AllowOverride All


</ Directory>




برايه اينکه اجازه override رو به htaccess. بدم

اينم فايل htaccess. امه




RewriteEngine on
RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ index.php






حالا 1 فايل به نامه IndexController.php تو



htdocs\application\controllers




دارم که سکريپتش اينه:



Zend_Loader::loadClass(’Zend_Controller_Action );
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
echo "<center><h1>HelloWorld</h1></center>";
}
}





در نهايت وقتی تو address bar تايپ ميکنم :

http://www.example.com/index/index

که طبقه controller و action ام بايد همين آدرس باشه

error 404 not found ميده

2 هفته است که همه کار کردم ولی هيچ،ديگه واقعاً کلافه شدم پست دادم که اگه ميشه کسی کنمم کنه

پيشاپيش متشکرم

zamanphp
یک شنبه 06 بهمن 1387, 17:46 عصر
محتویات فایل bootstrap رو بزار ببینم . چی کد زدی

cjcoax
دوشنبه 07 بهمن 1387, 01:05 صبح
محتویات فایل bootstrap رو بزار ببینم . چی کد زدی
zamanphp جان متشکرم از توجهتون
اينم index.php (bootstrap) امه:



require_once('Zend/Loader.php');
Zend_Loader::registerAutoload();
$controller = Zend_Controller_Front::getInstance();
$controller->setControllerDirectory('Zend/Controllers');
$controller->dispatch();

اينم اضافه کنم که هيچ مشکلی توو include_path هام نيستن.



اينم اضافه کنم که خودم احتمال ميدم که ايراد از apach باشه،چون که وقتی ادرسو تو adress bar تايپ
ميکنم نميفهمه که انگار اين www.example.com (http://www.example.com), لوکاله و ميخواد بره ادرسو از اينترنت بياره. به علاوه
تو httpd.config، تو
<vitrualhost>
ServerNameام هست همون www.example.com (http://www.example.com)

zamanphp
دوشنبه 07 بهمن 1387, 07:56 صبح
چند تا اشکال داری که به صورت نکته ای بهت می گم
1. ساختارت رو درست طراحی کن (نمونه فایل رو دریافت کن)
2. شما تو bootstrap داری registerAutoload رو فراخوانی می کنی . پس چه نیازی هست که تو controller های خودت loadClass رو دوباره صدا می زنی . خود ZendLoader خودش متوجه میشه!
3. مسیر controllers های برنامه ات رو هم داری به صورت اشتباه به dispatcher معرفی می کنی در حالی که شما داری مسیر کامپوننت Zend_Controller رو داری بهش می دی! نه برنامه رو!
4. راستی www.example.com رو تو فایل hosts تعریف کردی؟

خب من تمام اشکالات رو برطرف کردم تو یه فایل جدید. اون رو دریافت و تست کن
سوالی داشتی من در خدمت هستم
موفق باشید

cjcoax
دوشنبه 07 بهمن 1387, 09:31 صبح
zamanphp جان دستت درد نکنه، ولی بازم نشد، ميدونين تو hosts, همه چيو ست کردم(ip و www.example.com)
ولی وقتی ping www.example.com ميکنم، destination unreachable ميده
و بازم نا موفق بود اين تلاشم

zamanphp
دوشنبه 07 بهمن 1387, 13:58 عصر
اون کد رو سیستم من بدون هیچ مشکلی الان کار میکنه.
مجبورم یادآوری کنم :
به فرض برنامه روی درایو c هست:
پس مسیر root این هست :

C:\code_example\htdocs
حالا واسه تنظیم واسه آپاچی :

NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1>
DocumentRoot C:\code_example\htdocs
ServerName www.example.com
</VirtualHost>
تنظیم واسه فایل hosts :

127.0.0.1 www.example.com
تا این جا مه چیز ok هست
اگه باز وقتی آدرس رو می زنی و سعی داره با اینترنت وصل بشه و از بابت apache هم مطمئن هستی 100 درصد مشکل از hosts هست که ویندوز نمی تونه اون رو اجرا کنه
چون خودم بارها با این مشکل مواجه شده ام و مجبور بودم ام ویندوز رو upgrade کنم
امیدارم مشکلتون حل بشه
موفق باشید

reza.palang
شنبه 29 فروردین 1388, 00:13 صبح
سلام
باید ببخشید که این تاپیک رو میارم بالا. اما من هم دقیقا این مشکل رو دارم. برای من fatal error میده
Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in D:\wamp\www\zfquickstart2\library\Zend\Controller\ Dispatcher\Standard.php:241 Stack trace: #0 D:\wamp\www\zfquickstart2\library\Zend\Controller\ Front.php(934): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 D:\wamp\www\zfquickstart2\public\index.php(48): Zend_Controller_Front->dispatch() #2 {main} thrown in D:\wamp\www\zfquickstart2\library\Zend\Controller\ Dispatcher\Standard.php on line 241
اینجا در مرحله Create an Action Controller & View هستم که بر اساس چیزی که توی quick start هست باید Hello, Zend Framework MVC! رو ببینم. اما این ارور رو نشونم میده

zamanphp
یک شنبه 30 فروردین 1388, 08:56 صبح
مسیر root تون همنون D:\wamp\www\zfquickstart2\public\ هست؟
چون دارین از wamp استفاده می کنید، می گم.

reza.palang
چهارشنبه 02 اردیبهشت 1388, 01:59 صبح
خب بله. البته root به root/public ری دایرکت شده(htaccess.)
تست ساده زیر رو درست نشون میده

<?php
// public/index.php
echo "Hello";

ولی مثال های خودش رو نمیتونه نشون بده

zamanphp
چهارشنبه 02 اردیبهشت 1388, 08:47 صبح
پس به احتمال زیاد مسیر controllers ها درست ست نمیشه
محتویات فایل bootstrap رو بزار

reza.palang
چهارشنبه 02 اردیبهشت 1388, 10:22 صبح
راستش من هم همینجور فکر میکنم ولی : 1) چند بار از روی tutorial خود Zend جلو رفتم. و حتی اسم ها رو هم کپی کردم
2) پروژه آماده zend رو هم دانلود کردم و اون رو هم تست کردم. اما نشد(البته اون کامل بود و به دیتا بیس نیاز داشت)

این هم bootstrap.php

<?php
defined('APPLICATION_PATH')
or define('APPLICATION_PATH', dirname(__FILE__));

defined('APPLICATION_ENVIRONMENT')
or define('APPLICATION_ENVIRONMENT', 'development');

$frontController = Zend_Controller_Front::getInstance();

$frontController->setControllerDirectory('D:\wamp\www\zfquickstart\a pplication\controllers');

$frontController->setParam('env', APPLICATION_ENVIRONMENT);

unset($frontController);

zamanphp
چهارشنبه 02 اردیبهشت 1388, 22:05 عصر
با سلام
چون شما دارید نمونه برنامه رو توی زیر دایرکتوری ها اجرا می کنید باید یه تغییرات جزئی تو کد بدید
مسیر root شما D:\wamp\www می باشد
و نام دایرکتوری حاوی نمونه برنامه zfquickstart2 می باشد . پس :
فایل .htaccess واقع در مسیر D:\wamp\www\zfquickstart2\public\ رو به شکل زیر اصلاح کن:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /zfquickstart2/public/index.php [NC,L]
سپس فایل bootstrap رو قسمت ست controllers ها رو به شکل زیر اصلاح کن :

$frontController->setControllerDirectory(APPLICATION_PATH . '/controllers');
$frontController->setBaseUrl('/zfquickstart2/public');
تمام.
من مجبور شدم نرم افزار wamp رو برای رفع مشکلتون دریافت و نصب کنم که نمونه برنامه رو به طریق بالا اصلاح و روش اجرا کردم
سوالی بود من در خدمت شما هتسم
امیدوارم مشکلتون حل بشه. موفق باشید.

reza.palang
چهارشنبه 02 اردیبهشت 1388, 22:44 عصر
سلام. خیلی خیلی ممنون. شرمنده کردید.
بله حل شد.
اما من نمیدونم چرا این مشکل باید پیش بیاد. چون این آموزش برای سطح مبتدی هست. و من یشچ زمان نمیتونستم حلش کنم. شاید zend برای یک مبتدی گزینه خوبی نباشه.
به حر حال ممنون.

zamanphp
پنج شنبه 03 اردیبهشت 1388, 00:48 صبح
خواهش می کنم دوست عزیز.:چشمک:
درست می فرمایید ZF رو هر کسی سراغش نمی ره. به قول یکی از دوستان بیش از اندازه مهندسی کار شده و فهم رو برای مبتدی ها مشکل می کنه . واسه همین اکثرا مبتدی ها می رن سراغ دیگر فریم ورک ها . من خودم از نسخه 0.2.0 رفتم سراغش و به دلم نشت .
یه نیگا تو همین انجمن بندازین. تو این انجمن من تا الان فقط همین پست رو درباره ZF دیدم و پاسخ داده ام.
من با کمک یکی از دوستان که کار طراحی رو عهده داره ، در حال پیاده سازی منبعی فارسی برای Zend Framework هستیم با نام ZendFramework.ir (http://zendframework.ir) که شامل بخشهای مفید زیادی هست بخصوص انجمن . که تمامی بخش ها رو دارم با ZF پیاده می کنم. انشالله در آینده ای نزدیک اون رو بالا می یاریم

HRezaei
دوشنبه 24 آبان 1389, 07:38 صبح
یه نیگا تو همین انجمن بندازین. تو این انجمن من تا الان فقط همین پست رو درباره ZF دیدم و پاسخ داده ام.
به نظر من هم ZF خیلی مهجور واقع شده و راه اندازی یه منبع فارسی کار خیلی خوبیه واسه گسترش اون. دائم به سایت راه اندازی نشده سر می زنم! شاید هم بتونم تو راه اندازیش کمکتون کنم.
فقط اینو بگم از قبل یه جایی هم واسه zend server و zend studio کنار بزارید!
موفق باشید