زمان جاری: 2012/05/26, 01:06 AM خوش آمدید مهمان گرامی! (ورودعضویت)



مشکل با لینک فارسی


ارسال موضوع  ارسال پاسخ 
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
رتبه موضوع:
 
مشکل با لینک فارسی
نویسنده پیام
Masoud1365 آفلاین
تازه کار
*

ارسال‌ها: 36
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 7
1 بار تشکر شده در 2 پست
ارسال: #1
مشکل با لینک فارسی
توی یکی از کنترلرها با استفاده از روتر لینک رو به این صورت ایجاد کردم مثلا :
http://www.sitename.com/test/15/description.html
که این description هر چیزی میتونه باشه و از دیتا بیس هم خونده میشه حالا اینو که درست کردم با انگلیسی مشکل نداره ولی وقتی این description فارسی بشه اصلا لینکش ساخته نمیشه یعنی اینجوری میشه http://www.sitename.com/test و توی سورس صفحه هم اینجوریه <a href="">view</a> یهنی اصلا لینک ساخته نشده ! بخش view این قسمت رو نیز utf-8 کردم. به نظر شما مشکل کجاست ؟
2010/06/23 05:03 AM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 995
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 402
875 بار تشکر شده در 563 پست
ارسال: #2
RE: مشکل با لینک فارسی
خیلی دلایل میتونه داشته باشه. لطفا کد ویو و روترتون رو قرار بدین
2010/06/23 04:37 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
Masoud1365 آفلاین
تازه کار
*

ارسال‌ها: 36
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 7
1 بار تشکر شده در 2 پست
ارسال: #3
RE: مشکل با لینک فارسی
این قسمت توی روتر اضافه شده
کد PHP:
Router::parseExtensions('html''rss');
 
Router::connect('/news/:id/:slug', array('controller' => 'news''action' => 'view'), array('pass' => array('id''slug'),'id' => '[0-9]+') ); 
و این هم لینکی که در ویو ساخته میشه

کد PHP:
<?php echo $html->link('View', array('controller' => 'news''action' => 'view''id' => $news['News']['id'],'slug' => Inflector::slug($news['News']['title']),'ext' => 'html' )); ?>
2010/06/23 05:16 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 995
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 402
875 بار تشکر شده در 563 پست
ارسال: #4
RE: مشکل با لینک فارسی
اگر میگید لینک شاخته نمیشه ،فکر میکنم مشکل از Inflector::slug باشه که utf-8 رو پارس نمیکنه.
من از این helper که خودم نوشتم استفاده میکنم.

کد PHP:
<?
class SeoHelper extends AppHelper {

  function 
seoUrl$filename ){
      
$special_chars = array("?""[""]""/""\\""=""<"">"":"";","–"",""'","\"""&""$""#""*""("")""|""~""`""!""{""}"chr(0));
       
$filename str_replace($special_chars''$filename);
       
$filename preg_replace('/[\s-]+/''-'$filename);
       
$filename trim($filename,'.-_');
       return 
$filename;
  } 
  
  

           
}
?>

ببینید جواب میگیرید!
2010/06/23 05:25 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
Masoud1365 آفلاین
تازه کار
*

ارسال‌ها: 36
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 7
1 بار تشکر شده در 2 پست
ارسال: #5
RE: مشکل با لینک فارسی
اینو چیکارش کنم ؟ Blush
2010/06/23 05:57 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 995
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 402
875 بار تشکر شده در 563 پست
ارسال: #6
RE: مشکل با لینک فارسی
یک helper ساده هست.
اول یک فایل تو آدرس view/helpers/ به اسم seo.php بسازید. محتویات کد بالا رو داخل کپی پیست کنید.

تو کنترلر تون

کد PHP:
var $helpers= array(...,'Seo'); 

فراخوانی کنید. و بعد تا view ها تون به صورت زیر استفاده کنید.

کد PHP:
<?php echo $html->link('View', array('controller' => 'news''action' => 'view''id' => $news['News']['id'],'slug' => $Seo->seoUrl($news['News']['title']),'ext' => 'html' )); ?>
2010/06/23 06:07 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : Masoud1365
میلاد آفلاین
Sheriff
*****

ارسال‌ها: 62
تاریخ عضویت: Jan 2010
رتبه: 2
تشکر: 20
59 بار تشکر شده در 31 پست
ارسال: #7
RE: مشکل با لینک فارسی
سلام
توی نسخه ۱٫۳ مشکلی با utf-8 نداره Inflector.
به اضافه اینکه شما میتونید Inflector را به صورت دلخواه گسترشش بدید و یا کاستومایزش کنید.


[تصویر: 01323IMMi9k7q1tyawopv30g9dxs.png]
[تصویر: 01323IMMtw6x10xiwxlxsnp3h8vh.jpg]

اگر در اولين قدم، موفقيت نصيب ما مي شد، سعي و عمل ديگر معني نداشت.

(آخرین تغییر در این ارسال: 2010/06/23 10:15 PM توسط میلاد.)
2010/06/23 10:14 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : saleh
Masoud1365 آفلاین
تازه کار
*

ارسال‌ها: 36
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 7
1 بار تشکر شده در 2 پست
ارسال: #8
RE: مشکل با لینک فارسی
من توی نسخه 1.3 با کنسولش مشکل دارم ! وقتی بیک رو اجرا میکنم فایلهایی که میسازه خالیه
[/quote]
(2010/06/23 06:07 PM)saleh نوشته است:  یک helper ساده هست.
اول یک فایل تو آدرس view/helpers/ به اسم seo.php بسازید. محتویات کد بالا رو داخل کپی پیست کنید.

تو کنترلر تون

کد PHP:
var $helpers= array(...,'Seo'); 

فراخوانی کنید. و بعد تا view ها تون به صورت زیر استفاده کنید.

کد PHP:
<?php echo $html->link('View', array('controller' => 'news''action' => 'view''id' => $news['News']['id'],'slug' => $Seo->seoUrl($news['News']['title']),'ext' => 'html' )); ?>

کد:
Notice (8): Undefined variable: Seo [APP\views\news\index.ctp, line 48]
کد:
Fatal error: Call to a member function seoUrl() on a non-object in C:\wamp2\www\project\views\news\index.ctp on line 48
(آخرین تغییر در این ارسال: 2010/06/24 01:51 AM توسط Masoud1365.)
2010/06/24 01:10 AM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 995
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 402
875 بار تشکر شده در 563 پست
ارسال: #9
RE: مشکل با لینک فارسی
دوست عزیز پیشنهاد میدم کنسول رو فراموش کنید. شاید کارتون رو راحت کنه. اما کنسول همه چیز نیست. و شما رو در شناخت کامل ساختار کیک دور میکنه.
2010/06/24 02:50 AM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
Masoud1365 آفلاین
تازه کار
*

ارسال‌ها: 36
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 7
1 بار تشکر شده در 2 پست
ارسال: #10
RE: مشکل با لینک فارسی
1- این دوتا اروری که داده واسه چیشه ؟
2- از کنسول صرفا واسه ساختن مدل و کنترلر و استفاده میکنم که اون داده های بیس رو درست کنه بقیه کار رو که کلا خودمان باید کاستومایز کنیم.
2010/06/24 12:42 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 995
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 402
875 بار تشکر شده در 563 پست
ارسال: #11
RE: مشکل با لینک فارسی
ارور ها به خاطر این هست که helper فراخوانی نشده
2010/06/24 08:30 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
cybercoder غایب
Expired
**

ارسال‌ها: 116
تاریخ عضویت: Dec 2009
رتبه: 1
تشکر: 51
86 بار تشکر شده در 48 پست
ارسال: #12
RE: مشکل با لینک فارسی
این که کاری نداره !
می تونی در مدل قبل از ذخیره به جای slug خودت این کار رو انجام بدی
اینم یه نمونه
کد:
function beforeSave()
    {
        if (empty($this->id))
        {
            $should_change_chars=array(" ","\\","/","+","=","_","*","&","^","%","$","~","'",":","\"","<",">","?","!","*",".",",","|","@","#") ;
            $this->data[$this->name]['url'] = str_replace($should_change_chars,'-',$this->data[$this->name]['title']).'.html' ;
            //Inflector::slug(strtolower($this->data[$this->name]['title']),'-').'.html';
        }
        
        return true;
    }
البته توجه کنید که من url رو در جدول ذخیره می کنم و نیازی به روتر ندارم
موفق باشید
(آخرین تغییر در این ارسال: 2010/06/25 12:26 PM توسط cybercoder.)
2010/06/25 12:21 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
Masoud1365 آفلاین
تازه کار
*

ارسال‌ها: 36
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 7
1 بار تشکر شده در 2 پست
ارسال: #13
RE: مشکل با لینک فارسی
فکر نمیکنم این روش اصولی باشه !
اگر در آینده به هر دلیلی خواستیم نوع نمایش رو عوض کنیم با مشکل مواجه میشیم !
2010/06/26 05:50 AM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
cybercoder غایب
Expired
**

ارسال‌ها: 116
تاریخ عضویت: Dec 2009
رتبه: 1
تشکر: 51
86 بار تشکر شده در 48 پست
ارسال: #14
RE: مشکل با لینک فارسی
سایت های بزرگی دارن از این روش استفاده می کنند و معمولا url قضیه ای نیست که عوض بشه ( هر چند تعویض به سادگی امکان پذیره ) اما با این حال اگر خیلی این مسئله براتون مهمه می تونید زحمت بکشید توابع مربوط به تابع slug رو جایگزین کنید یا یک تابع override براش بنویسید.
همون طور که دوستان فرمودند در cake 1.3 ساپورت میشه پس می تونید کدهای اونجا رو هم ببینید.

موفق باشید.
(آخرین تغییر در این ارسال: 2010/06/26 10:59 AM توسط cybercoder.)
2010/06/26 10:56 AM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
thinking21 آفلاین
تازه کار
*

ارسال‌ها: 27
تاریخ عضویت: Sep 2010
رتبه: 0
تشکر: 10
0 بار تشکر شده در 1 پست
ارسال: #15
RE: مشکل با لینک فارسی
(2010/06/23 10:14 PM)میلاد نوشته است:  سلام
توی نسخه ۱٫۳ مشکلی با utf-8 نداره Inflector.
به اضافه اینکه شما میتونید Inflector را به صورت دلخواه گسترشش بدید و یا کاستومایزش کنید.

لطفا می شه در موردش یکمی توضیح بدین Inflector
و کاربردش در برنامه ... Huh
ممنون
(آخرین تغییر در این ارسال: 2010/11/12 12:31 PM توسط thinking21.)
2010/11/12 12:30 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
ارسال موضوع  ارسال پاسخ 


پرش در انجمن: