[Решено] Drupal 7. Profile 2. Не создается сущность "профиль" с помощью "Правил".

Главные вкладки

Аватар пользователя Atterni4 Atterni4 6 октября 2011 в 17:31

Доброго времени суток, уважаемые форумчане. При разработке сложного профиля в Drupal 7 столкнулся с непонятной бедой. Сущность профиля не создается "Правилами" (/admin/config/workflow/rules).

Суть проблемы:
Есть модуль profile2.
Есть правила (/admin/config/workflow/rules).
Есть views.
С помощью profile2 и такой то матери создаю несколько профилей. В каждом профиле содержатся "поля" и "коллекции полей". По задумке - каждый профиль является отдельной частью анкеты (ну очень она большая и сложная).
После создания нового пользователя автоматически создается "основной профиль". Вывод дополнительных профилей осуществляется с помощью views.

Проблема первая:
Нельзя (или я не знаю как) с помощью views вывести "собственный" профиль до тех пор пока он не сохранен.

Проблема вторая:
С помощью правил не получается сохранить сущность "собственного" профиля.

Конфигурация -> Рабочий процесс -> Правила
Конструкция правила:
События:
- После сохранения новой учетной записи пользователя
Условия:
- Пользователь имеет роль
(Параметр: Пользователь: [account], Роли: administrator, newuser, Match roles: любой)
Действия:
- Создать новую сущность
(Параметр: Тип сущности: Профиль, Type: Биография, Пользователь: [account]
Provides variables: _bio (_bio))

Собственно создания сущности не происходит. Но, изменив условия я могу "Правилами" удалить уже созданную сущность(создать с теми же условиями не получается)

Проблема третья:
Пользователям не должен быть доступен "собственный" профиль напрямую, они с ним работают через "Представления" (views). А раз нет прямого доступа - то нет и возможности зайти в "собственный" профиль, нажать кнопку "Изменить", посмотреть на пустую страницу и нажать на кнопку сохранить.(после этих манипуляций сущность профиля создается и к нему можно добавлять "Коллекции полей").

Зайдя в "собственный" профиль пользователь видит надпись "There is no profile data yet." и кнопку добавить, которая ведет на страницу, которой нет".

Огромная просьба - помогите ))) Ну или покажите направление куда идти с лопатой.
P.S. - Google и drupal.org уже изрыты...
P.S.S. - Заранее огромное спасибо.

Комментарии

Аватар пользователя andypost@drupal.org andypost@drupal.org 6 октября 2011 в 23:43

Похоже не получится без влезания в код решить эту проблему. Лично топтал грабли интеграции profile2 c ctools - сыровато еще, нет возможности выбрать нужный профиль (отображется случайный).

1. пока данные не сохранены как их можно вывести? где они хранятся?

2. Вероятно рулесы не все параметры передают конструктору сущности, предполагаю - думаю стоит посмотреть в сторону отладки правил http://nodeone.se/node/1005

3. Профиль имеет свой 'uri callback' - те вывод его можно переопределить туда куда нужно.

Аватар пользователя Atterni4 Atterni4 7 октября 2011 в 10:02

"<a href="mailto:andypost@drupal.org">andypost@drupal.org</a>" wrote:
пока данные не сохранены как их можно вывести? где они хранятся?

Пока данные не сохранены существует только шаблон, "сущности" или "ноды" еще не созданы.

"<a href="mailto:andypost@drupal.org">andypost@drupal.org</a>" wrote:
Профиль имеет свой 'uri callback' - те вывод его можно переопределить туда куда нужно

Вот как раз определить вывод профиля туда куда нужно это не беда, проблема в том, что его "не существует" для того, чтобы его вывести )

"<a href="mailto:andypost@drupal.org">andypost@drupal.org</a>" wrote:
Вероятно рулесы не все параметры передают конструктору сущности, предполагаю - думаю стоит посмотреть в сторону отладки правил http://nodeone.se/node/1005[/quote]

Спасибо, за совет, попробую покопать в эту сторону. А так не хотелось с этим в код лезть Wink

Аватар пользователя andypost@drupal.org andypost@drupal.org 7 октября 2011 в 15:01

Дописал интеграцию профайла2 с ctools - стоит вопрос с формами редактирования и добавления, если есть идеи по реализации - готов обсудить.

Конструктор у сущности типичный, передается пользователь и тип профиля, дальше $profele->save()

Вероятно, какие-то недоделки в интеграции с рулесами, но у меня подозрение на интеграцию entity+rules

Аватар пользователя Atterni4 Atterni4 7 октября 2011 в 15:05

"<a href="mailto:andypost@drupal.org">andypost@drupal.org</a>" wrote:
Вероятно, какие-то недоделки в интеграции с рулесами, но у меня подозрение на интеграцию entity+rules

Да недоделки определенно на лицо. Как выяснилось нельзя давать машинные имена профилям начинающиеся с "_".
Я так понял это "недокументированная" особенность системы. Учитывая, что в описании сказано:
"A unique machine-readable name for this profile type. It must only contain lowercase letters, numbers, and underscores."
Собственно из этого и растут поблемы

Аватар пользователя andypost@drupal.org andypost@drupal.org 7 октября 2011 в 15:08

Интересная особенность, как-то не приходило в голову делать машинные имена начинающимися не с символа - это же имя и оно должно быть читабельным! Smile

Аватар пользователя Atterni4 Atterni4 7 октября 2011 в 15:26

"<a href="mailto:andypost@drupal.org">andypost@drupal.org</a>" wrote:
Интересная особенность, как-то не приходило в голову делать машинные имена начинающимися не с символа - это же имя и оно должно быть читабельным! :)

Мне до этого проекта тоже не приходило в голову делать машинное имя начинающееся с "_". Мне необходимо было как то упорядочить этот ад из имен. Кроме того все эти "нечитаемости" прячутся за алиасами )