شما اینجا هستید

مشکلات مهاجرت از دروپال 6 و 7 به دروپال 8

26 پست / 0 جدید
آخرین ارسال

وضعیت: آفلاین
  • نسخه دروپال: 7.56
  • تعداد ارسال: ۶۹۴
  • تاریخ عضویت: ۱۳۸۹/۱۰/۳۰
  • آخرین حضور: ۱۳۹۶/۰۷/۱۹
  • سمت: ویراستار
  • موقعیت: نامشخص

سلام
این بحث رو ایجاد کردم تا مشکلات و راه حل هایی که زمان آپگرید از نسخه های قبلی دروپال به نسخه جدید یعنی 8 هست رو مطرح کنیم.

نسخه مرتبط: 

وضعیت: آفلاین
  • نسخه دروپال: 7.56
  • تعداد ارسال: ۶۹۴
  • تاریخ عضویت: ۱۳۸۹/۱۰/۳۰
  • آخرین حضور: ۱۳۹۶/۰۷/۱۹
  • سمت: ویراستار
  • موقعیت: نامشخص

یکی از روشهای آپگرید، فعال کردن ماژولهای Migrate Drupal UI و Migrate Drupal و Migrate
و رفته به مسیر http://site.com/upgrade و وارد کردن اطلاعات مربوط به دیتابیس نسخه 6 یا 7 دروپال است.


وضعیت: آفلاین
  • نسخه دروپال: 7.56
  • تعداد ارسال: ۶۹۴
  • تاریخ عضویت: ۱۳۸۹/۱۰/۳۰
  • آخرین حضور: ۱۳۹۶/۰۷/۱۹
  • سمت: ویراستار
  • موقعیت: نامشخص

اولین مشکلی که بنظر بعد آپگرید بوجود می اید اینه که عنوان مطلب از حالت ضروری بودن خارج میشود.


وضعیت: آفلاین
  • تعداد ارسال: ۳۶
  • تاریخ عضویت: ۱۳۸۹/۰۶/۰۳
  • آخرین حضور: ۱۳۹۶/۰۵/۱۴
  • سمت: ویراستار
  • موقعیت: نامشخص

سلام
طبق جستجویی که روی این مورد انجام دادم میشه فهمید که این مشکل نیست و قابلیتی برای دروپال 8 هست که شما میتونید عنوان را اجباری کنید یا اون را از حالت اجباری در آورده و حتی اونو مخفی کنید.


وضعیت: آفلاین
  • نسخه دروپال: 7.56
  • تعداد ارسال: ۶۹۴
  • تاریخ عضویت: ۱۳۸۹/۱۰/۳۰
  • آخرین حضور: ۱۳۹۶/۰۷/۱۹
  • سمت: ویراستار
  • موقعیت: نامشخص

سلام
شما از کجا میتونید عنوان رو مخفی یا اجباری کنید؟


وضعیت: آفلاین
  • تعداد ارسال: ۳۶
  • تاریخ عضویت: ۱۳۸۹/۰۶/۰۳
  • آخرین حضور: ۱۳۹۶/۰۵/۱۴
  • سمت: ویراستار
  • موقعیت: نامشخص

مقاله و صفحه ساده که عنوان اجباری دارن بصورت پیشفرض !
مخفی کردن عنوان با استفاده از اون قسمت form-display یا نمایش فرم در بخش مدیریت انواع محتوا انجام میشه.
اجباری بودن هم در زمان ایجاد نوع محتوای جدید یک چک باکس است که باید فعال شود مثل بقیه فیلد ها.
محدودیت دیگه ای نیاز داشتید میتونید از ماژول https://www.drupal.org/project/node_title_validation استفاده کنید.


وضعیت: آفلاین
  • نسخه دروپال: 7.56
  • تعداد ارسال: ۶۹۴
  • تاریخ عضویت: ۱۳۸۹/۱۰/۳۰
  • آخرین حضور: ۱۳۹۶/۰۷/۱۹
  • سمت: ویراستار
  • موقعیت: نامشخص

با تشکر
مخفی کردن بله از بخش نمایش فرم هست. اما در مورد اجباری شدن، این اتفاق بعد از آپگرید از 7 به 8 اجباری نمیشه. و جایی هم برای تغییرش نیست.


وضعیت: آفلاین
  • تعداد ارسال: ۳۶
  • تاریخ عضویت: ۱۳۸۹/۰۶/۰۳
  • آخرین حضور: ۱۳۹۶/۰۵/۱۴
  • سمت: ویراستار
  • موقعیت: نامشخص

برعکس دروپال 7 که فیلد عنوان یک تکست باکس کاملا مستقل و جدا بود ، الان در دروپال 8 فیلد عنوان ، همانند فیلد های دیگر بصورت entity field تعریف شده است و این دلیلی برای داشتن کنترل کامل بروی این فیلد می باشد.
مطمئنا بعد از آپگرید ، دروپال برای شما فیلد عنوان را درست کرده اما نه از نوع اجباری ، حال شما میخواهید این فیلد اجباری باشد به بخش مدیریت فیلد مراجعه کنید و اجباری بودن اون را فعال کنید.


وضعیت: آفلاین
  • تعداد ارسال: ۳۶
  • تاریخ عضویت: ۱۳۸۹/۰۶/۰۳
  • آخرین حضور: ۱۳۹۶/۰۵/۱۴
  • سمت: ویراستار
  • موقعیت: نامشخص

مثلا من یک نوع محتوا بعد از آپگرید دارم بنام news که عنوان هم براش الان اجباری هست. ولی با رفتن به آدرس admin/structure/types/manage/news/fields/node.news.field_title میتونم اجباری بودن عنوان را غیر فعال کنم. شما باید مطمئنا برعکس اینکارو انجام بدید مشکلتون حل میشه


وضعیت: آفلاین
  • نسخه دروپال: 7.56
  • تعداد ارسال: ۶۹۴
  • تاریخ عضویت: ۱۳۸۹/۱۰/۳۰
  • آخرین حضور: ۱۳۹۶/۰۷/۱۹
  • سمت: ویراستار
  • موقعیت: نامشخص

بنده که چنین چیزی رو پیدا نکردم. نوع محتوای بنده توو دروپال 7 article است. الان بعد آپگرید توو دروپال 8 هم همینه.
اما خبری از فیلد عنوان جهت اعمال تغییرات نیست. شما خودتون آپگرید کردید؟
البته تا قبل آپگرید هیچ مشکلی نیست اما بعد اپگرید این مشکل بوجود میاد.

عکس ضمیمه: 

وضعیت: آفلاین
  • تعداد ارسال: ۳۶
  • تاریخ عضویت: ۱۳۸۹/۰۶/۰۳
  • آخرین حضور: ۱۳۹۶/۰۵/۱۴
  • سمت: ویراستار
  • موقعیت: نامشخص

فیلد عنوان شما همون فیلد موضوع field_subject است ؟


وضعیت: آفلاین
  • نسخه دروپال: 7.56
  • تعداد ارسال: ۶۹۴
  • تاریخ عضویت: ۱۳۸۹/۱۰/۳۰
  • آخرین حضور: ۱۳۹۶/۰۷/۱۹
  • سمت: ویراستار
  • موقعیت: نامشخص

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


وضعیت: آفلاین
  • تعداد ارسال: ۳۶
  • تاریخ عضویت: ۱۳۸۹/۰۶/۰۳
  • آخرین حضور: ۱۳۹۶/۰۵/۱۴
  • سمت: ویراستار
  • موقعیت: نامشخص

پس عملا فیلد عنوان شما اصلا در این نوع محتوای جدید بوجود نیومده که بخواد اجباری باشه یا غیر اجباری ؟
عکسی از لیست فیلد ها روی دروپال 7 هم دارید که ضمیمه کنید؟


وضعیت: آفلاین
  • تعداد ارسال: ۳۶
  • تاریخ عضویت: ۱۳۸۹/۰۶/۰۳
  • آخرین حضور: ۱۳۹۶/۰۵/۱۴
  • سمت: ویراستار
  • موقعیت: نامشخص

لطفا یک عکس از صفحه اداره فرم دروپال 8 هم ارسال کنید تا من با دروپال 8 خودم یک مقایسه کنم ؟


وضعیت: آفلاین
  • نسخه دروپال: 7.56
  • تعداد ارسال: ۶۹۴
  • تاریخ عضویت: ۱۳۸۹/۱۰/۳۰
  • آخرین حضور: ۱۳۹۶/۰۷/۱۹
  • سمت: ویراستار
  • موقعیت: نامشخص

بله عملا فیلد عنوان در نوع محتوای جدید نیست. خود دروپال 8 بصورت خام هم چنین چیزی نیست.
صفحه اداره فرمها هم تنها میشه عنوان رو مخفی کرد نه اجباری یا غیر اجباری

عکس ضمیمه: 

وضعیت: آفلاین
  • تعداد ارسال: ۳۶
  • تاریخ عضویت: ۱۳۸۹/۰۶/۰۳
  • آخرین حضور: ۱۳۹۶/۰۵/۱۴
  • سمت: ویراستار
  • موقعیت: نامشخص

دقیقا تمامی موارد با نوع محتوای من یکی هست و در زمان ایجاد محتوا عنوان برای من اجباری است.
یک تصویر از صفحه افزودن محتوا هم ارسال کنید که فیلد عنوان را نشان دهد؟

عکس ضمیمه: 

وضعیت: آفلاین
  • نسخه دروپال: 7.56
  • تعداد ارسال: ۶۹۴
  • تاریخ عضویت: ۱۳۸۹/۱۰/۳۰
  • آخرین حضور: ۱۳۹۶/۰۷/۱۹
  • سمت: ویراستار
  • موقعیت: نامشخص

با تشکر

عکس ضمیمه: 

وضعیت: آفلاین
  • تعداد ارسال: ۳۶
  • تاریخ عضویت: ۱۳۸۹/۰۶/۰۳
  • آخرین حضور: ۱۳۹۶/۰۵/۱۴
  • سمت: ویراستار
  • موقعیت: نامشخص

آیا وقتی محتوایی هم از این صفحه ایجاد میکنید خطا میگیرید که دیتابیس نمیتونه عنوان خالی نگهداری کنه یا نه ؟


وضعیت: آفلاین
  • نسخه دروپال: 7.56
  • تعداد ارسال: ۶۹۴
  • تاریخ عضویت: ۱۳۸۹/۱۰/۳۰
  • آخرین حضور: ۱۳۹۶/۰۷/۱۹
  • سمت: ویراستار
  • موقعیت: نامشخص

بله البته زمانی که فیلد عنوان خالی باشه و ذخیره بشه. نه زمانی که فیلد عنوان پر بشه
Drupal\Core\Entity\EntityStorageException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'title' cannot be null: INSERT INTO {node_field_data} (nid, vid, type, langcode, status, title, uid, created, changed, promote, sticky, revision_translation_affected, default_langcode) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9, :db_insert_placeholder_10, :db_insert_placeholder_11, :db_insert_placeholder_12); Array ( [:db_insert_placeholder_0] => 44399 [:db_insert_placeholder_1] => 44399 [:db_insert_placeholder_2] => article [:db_insert_placeholder_3] => fa [:db_insert_placeholder_4] => 1 [:db_insert_placeholder_5] => [:db_insert_placeholder_6] => 1 [:db_insert_placeholder_7] => 1501920992 [:db_insert_placeholder_8] => 1501921002 [:db_insert_placeholder_9] => 1 [:db_insert_placeholder_10] => 0 [:db_insert_placeholder_11] => 1 [:db_insert_placeholder_12] => 1 ) in Drupal\Core\Entity\Sql\SqlContentEntityStorage->save() (line 777 of core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php).


وضعیت: آفلاین
  • نسخه دروپال: 7.56
  • تعداد ارسال: ۶۹۴
  • تاریخ عضویت: ۱۳۸۹/۱۰/۳۰
  • آخرین حضور: ۱۳۹۶/۰۷/۱۹
  • سمت: ویراستار
  • موقعیت: نامشخص

وضعیت: آفلاین
  • تعداد ارسال: ۳۶
  • تاریخ عضویت: ۱۳۸۹/۰۶/۰۳
  • آخرین حضور: ۱۳۹۶/۰۵/۱۴
  • سمت: ویراستار
  • موقعیت: نامشخص

آره اینجارو کامل دیدم و حتی https://www.drupal.org/node/2821507 بیشتر به مشکل شما نزدیکه.
در دیتابیس data type فیلد عنوان از نوع اجباری تعریف شده با اینکه فیلد عنوان میتونه اجباری نباشه و این باگ تو لینک فوق کامل در حال دنبال شدن هست. اما اجباری کردن و نکردن فیلد عنوان از قسمت form display انجام میشه. عملا وقتی فیلد عنوان enable شده باشه ، باید اجباری باشه.
من مقداری کدهای پشت پرده را بررسی کردم ، دیدم زمانی که فیلد عنوان از نمایش فرم disable میشه ، require بودن اون هم false میشه و عملا در فرم مخفی میشه و اختلالی از نظر validation بوجود نمیاره ، اما وقتی enable کنید ، بلافاصله require بودن اون هم true میشه و validation فرم روی اون اعمال میشه.
حالا اینکه شما بصورت پیشفرض حتی در زمان enable بودن ، require نیستید احتمالا یک اختلال در زمان آپگرید شماست.
حالا به پیشنهادات من دقت کنید اگه نکته ای جا افتاده دوباره انجام بدید.
قبل از هر چیز برای آپگرید از دروپال 7 به 8 حتما دروپال 7 و ماژول ها رو آپدیت کنید و بعد اقدام به آپگرید !
اگر مشکل همچنان پابرجا بود ، از همون قسمت form display یکبار عنوان رو بطول کامل disable کنید و مجددا اونو enable کنید چرا که ممکنه در زمان enable شدن ، عملیات اجباری شدن فیلد بروی اون اعمال بشه و فیلد شما اجباری شود.
اگر مشکل مرتفع نشد با ماژول های validation یا حتی جاوا اسکریپت ، عنوان رو اجباری کنید تا موقتا اختلالی در کار شما بوجود نیاد.
من همچنان بدلیل نبودن کنترل در UI برای اجباری کردن فیلد عنوان ، این موضوع رو دنبال میکنم که از دیتابیس چطور میشه فیلد عنوان رو بطور مستقیم require کرد و نتیجه ای را اینجا برای شما ارسال میکنم.


وضعیت: آفلاین
  • تعداد ارسال: ۳۶
  • تاریخ عضویت: ۱۳۸۹/۰۶/۰۳
  • آخرین حضور: ۱۳۹۶/۰۵/۱۴
  • سمت: ویراستار
  • موقعیت: نامشخص

البته مطمئنا با hook_form_alter میشه تغییراتی برای این نوع محتوا بوجود آورد ولی قبلش باید ببینیم مشکل از کجاست !


وضعیت: آفلاین
  • تعداد ارسال: ۳۶
  • تاریخ عضویت: ۱۳۸۹/۰۶/۰۳
  • آخرین حضور: ۱۳۹۶/۰۵/۱۴
  • سمت: ویراستار
  • موقعیت: نامشخص

آقا یک موضوعی من به ذهنم رسید.
ورژن PHP شما چنده ؟ اونو به بالاترین نسخه تغییر بدید شاید مشکل requirement دروپال برای شما وجود داشته باشه چون توی باگ های ذکر شده اعلام شده 7 ماه پیش این مشکل برطرف شده و منم چنین مشکلی رو روی PHP7 ندارم الان !


وضعیت: آفلاین
  • نسخه دروپال: 7.56
  • تعداد ارسال: ۶۹۴
  • تاریخ عضویت: ۱۳۸۹/۱۰/۳۰
  • آخرین حضور: ۱۳۹۶/۰۷/۱۹
  • سمت: ویراستار
  • موقعیت: نامشخص

نسخه 5.6.30
یکبارم رو php7 امتحان میکنم.


وضعیت: آفلاین
  • تعداد ارسال: ۳۶
  • تاریخ عضویت: ۱۳۸۹/۰۶/۰۳
  • آخرین حضور: ۱۳۹۶/۰۵/۱۴
  • سمت: ویراستار
  • موقعیت: نامشخص

البته عملیات آپگرید رو هم روی نسخه بالاتر PHP انجام بدید !


وضعیت: آفلاین
  • نسخه دروپال: 7.56
  • تعداد ارسال: ۶۹۴
  • تاریخ عضویت: ۱۳۸۹/۱۰/۳۰
  • آخرین حضور: ۱۳۹۶/۰۷/۱۹
  • سمت: ویراستار
  • موقعیت: نامشخص

نسخه 7.0.10 هم انجام شد، درست نشد. شاید شما از ماژول Title و... توو دروپال 7 استفاده کردید؟