Anonymous
т.е в методе обращаюсь API Woocommerce и API отдает мне данные в таком виде теперь мне на прямую нужно вывести эти данные в GridView
Евгений
моделькам в принципе всё равно откуда ты достаёшь данные :)
Павел
Ну делай класс модели только не наследуйся от ActiveRecord
Евгений
не помню как оно там называется по научному ... модельки используемые для поиска ... генерируются через gii даже
Павел
Anonymous
можете пример какой то привести? как то не могу сообразить, переработался наверное а сроки горят
Евгений
на сколько я помню там не особо что-то поменялось в этом плане
Anonymous
выручайте
HikkiMike
Anonymous
денег нет
причем тут деньги, мне просто путь указать ссылочкой на пример какой-то
HikkiMike
да блин чел шучу
Павел
Тебе пример работы с гридом или пример модели для получения данных?
Ярослав
HikkiMike
Evgeny
Народ, парню совсем не в моготу, не до шуток((
Varyen
🎅
Парни, кто нибудь подскажет четкие видосики про vuejs 2? можно на англ
Varyen
Varyen
и как dataprovider используй
Anonymous
Павел
Имхо православно через модель
Varyen
почему? он экстендит CDataProvider, там есть пагинация
Varyen
должно работать в теории )
Varyen
собственно CActiveDataProvider его же экстендит, который в большинстве случаев этим виджетом отображают
Павел
Да кстати действительно
Павел
Православно через модель, но быстрее через CArrayDataProvider
Павел
Декодь json и пихай в массив
Anonymous
спасибо, сейчас попробую
who are you
Anonymous
public function actionParseProducts()
{
$client = new WC_API_Client(
'http://project4.ru',
'ck_b0a77ba20fbae531423ba8479fe8f9a84c6678f9',
'cs_1e78436c2bdc556022495d7322deb2dec53a1722',
$this->module->options
);
$data_prod = $client->products->get();
$jsondecode = CJSON::decode($data_prod, true);
$arrayDataProvider=new CArrayDataProvider($jsondecode, array(
'id'=>'id',
'pagination'=>array(
'pageSize'=>10,
),
));
$params =array(
'arrayDataProvider'=>$arrayDataProvider,
);
$this->render('index', $params);
}
Anonymous
как то так?
Павел
public function actionParseProducts()
{
$client = new WC_API_Client(
'http://project4.ru',
'ck_b0a77ba20fbae531423ba8479fe8f9a84c6678f9',
'cs_1e78436c2bdc556022495d7322deb2dec53a1722',
$this->module->options
);
$data_prod = $client->products->get();
$jsondecode = CJSON::decode($data_prod, true);
$arrayDataProvider=new CArrayDataProvider($jsondecode, array(
'id'=>'id',
'pagination'=>array(
'pageSize'=>10,
),
));
$params =array(
'arrayDataProvider'=>$arrayDataProvider,
);
$this->render('index', $params);
}
Ну ключи то к API нельзя же так выкладывать
Anonymous
та ничего страшного, всеровно на локалке всё делается
Anonymous
сделал, но вылетает ошибка В классе TbTypeahead должны быть определены значения свойств "model" и "attribute", либо "name".
Павел
http://www.yiiplayground.com/index.php?r=UiModule/dataview/gridViewArray
Павел
Вот как то так
Anonymous
спасибо
Павел
Что заработало?
Павел
Ща в тостере ещё тогда запощу
Павел
До кучи
Evgeny
Подскажите плиз.
Вот что бы вывести все элементы таблицы можно использовать 2 варианта:
$posts = Post::find()->with('category')->all();
$posts_model = new \app\models\Posts();
а можно для $posts_model сделать $posts_model->joinWith ??
вернее так нельзя, а как сделать связный запрос тогда?
Evgeny
$posts - выводит все посты
$posts_model - только нужный
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
как создание нового объекта выведет только нужный?
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Post::findOne($criteria) тогда уж
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
или Post::find()->with(...)->andWhere(...)->one();
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
но лучше создать потомка ActiveQuery для таких вещей
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
и потом уже где нужно Post::find()->всеЧтоУгодно()->one()
Evgeny
а через модель такую связь организовать можно?
Evgeny
прост в самой модельке у меня прописаны связи
Evgeny
но задействовать их можно через joinWith
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
ну получи модель и от модели обращайся к отношению
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
если тебе для одной
Evgeny
как от модели обратиться к отношению
Evgeny
->getUser()
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
$model = Post::findOne($id);
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
$user = $model->user;
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
если геттер на getUser()
Evgeny
Evgeny
связь вроде верная
Evgeny
$posts = new Posts();
VarDumper::dump($posts->user); // null
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
а что в user_id?
Evgeny
id автора поста
Evgeny
по которому я хочу найти реальное имя его, а не цифровой номер
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
так
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
$posts = new Posts();
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
ты создаешь новый объект Posts
Evgeny
да
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
у него и будет user_id = null
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
$post = Posts::findOne($id);
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
$user = $post->user; // Если есть что-то в user_id (с fk) то вернет User
Evgeny
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
ты как при создании нового объекта хочешь получить что-то конкретное?
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
технически у тебя в init() может быть что-то прописано, то да на выходе ты получишь конкретную запись, но это было бы бредово. Поэтому скорее всего у тебя там пустой объект Posts
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
тебе нужно получить с базы какую-то запись, ты должен сделать это через ActiveQuery, быстрый способ через findOne() от Posts см выше.
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
С отношением у тебя все в порядке