Наш ассоциированный член www.Bikinika.com.ua

PHP

PHP бібліотека для Sanity API

sanity-php вимагає PHP> = 5.6 з встановленим модулем json.

Ви можете встановити бібліотеку через Композитор . Виконайте таку команду:

композитор вимагає розумності / sanity-php

Щоб скористатися бібліотекою, використовуйте Composer автозавантаження :

require_once 'vendor / autoload.php'; використовувати Sanity-клієнт як SanityClient; $ client = new SanityClient (['projectId' => 'your-project-id', 'набір даних' => 'ім'я вашого набору даних', 'useCdn' => true, 'apiVersion' => '2019-01- 29 ',]); $ client = new SanityClient (['projectId' => 'your-project-id', 'набір даних' => 'ім'я вашого набору даних', 'useCdn' => false, 'apiVersion' => '2019-01- 29 ',' token '=>' sanity-auth-token ',]);

Sanity використовує дати ISO (YYYY-MM-DD) у часовому поясі UTC для керування версіями. Пояснення для цього можна знайти в документації

Загалом, якщо ви не знаєте, яку версію API потрібно використовувати, потрібно встановити її на поточну дату UTC. Роблячи це, ви отримаєте всі останні виправлення та функції, не допускаючи жодного плутанини в часовому поясі та блокування API, щоб запобігти злому змін.

Примітка : Не намагайтеся використовувати динамічне значення для apiVersion. Вся причина для встановлення статичного значення полягає в запобіганні несподіваних, порушень змін.

У наступних версіях буде потрібно вказати версію API. Наразі для підтримки зворотної сумісності, не вказуючи версію, буде викликано попередження про знецінення і повернеться до використання v1.

$ document = $ client-> getDocument ('someDocumentId'); $ results = $ client-> fetch ('* [_ type == $ type] [0 ... 3]', ['type' => 'product']); foreach ($ product в $ results) {echo $ product ['title']. '\ t }

Див документація запиту для отримання додаткової інформації про те, як писати запити.

$ doc = ['_type' => 'велосипед', 'name' => 'Bengler Tandem Extraordinaire', 'місця' => 2,]; $ newDocument = $ client-> create ($ doc); echo 'Велосипед був створений, ідентифікатор документа є'. $ newDocument ['_id'];

Це створює новий документ з даними властивостями. Вона повинна містити атрибут _type і може містити атрибут _id. Якщо вказано ідентифікатор і документ з цим ідентифікатором вже існує, то мутація не буде виконана. Якщо ідентифікатор не вказано, він буде автоматично створений і включено до повернутого документа.

Як зазначено вище, якщо ви включаєте властивість _id під час виклику create (), а документ з цим ідентифікатором вже існує, він зазнає помилки. Якщо ви хочете ігнорувати операцію створення, якщо вона існує, ви можете використовувати createIfNotExists (). Вона приймає ті ж самі аргументи, що і create (), з тією лише різницею, що вона вимагає атрибута _id.

$ doc = ['_id' => 'my-document-id', '_type' => 'велосипед', 'ім'я' => 'Дивовижний велосипед', 'сидіння' => 3,]; $ newDocument = $ client-> createIfNotExists ($ doc);

Якщо вас не хвилює, чи є документ вже існує і хочете його замінити, ви можете скористатися методом createOrReplace ().

$ doc = ['_id' => 'my-document-id', '_type' => 'велосипед', 'ім'я' => 'Дивовижний велосипед', 'сидіння' => 3,]; $ newDocument = $ client-> createOrReplace ($ doc); використання Sanity - виняток \ t try {$ updatedBike = $ client -> patch ('bike-123') -> set (['inStock' => false]) -> inc (['numSold' => 1]) -> commit (); } catch (BaseException $ error) {echo 'Ні, оновлення не вдалося:'; var_dump ($ error); }

Todo: Документуйте всі операції з виправленнями

використання Sanity - виняток \ t спробуйте {$ client-> delete ('bike-123'); } catch (BaseException $ error) {echo 'Delete failed:'; var_dump ($ error); } $ namePatch = $ client-> patch ('bike-310') -> set (['name' => 'A Bike To Go']); try {$ client-> transaction () -> create (['name' => 'Bengler Tandem Extraordinaire', 'seat' => 2]) -> видалити ('bike-123') -> патч ($ namePatch) -> commit (); echo 'Просто сталося багато речей!' ; } catch (BaseException $ error) {echo 'Операція не виконана:'; var_dump ($ error); } використовувати Sanity патч; використання Sanity \ t $ patch = new Patch ('<documentId>'); $ patch-> inc (['count' => 1]) -> unset (['visits']); $ client-> mutate ($ patch); $ transaction = new Transaction (); $ transaction -> create (['_id' => '123', 'name' => 'FooBike']) -> delete ('someDocId'); $ client-> mutate ($ transaction);

Важливим зауваженням у цьому підході є те, що ви не можете викликати commit () на транзакціях або латках, створених таким чином, замість цього ви повинні передати їх на client.mutate ().

$ config = $ client-> config (); echo $ config ['набір даних']; $ client-> config (['database' => 'newDataset']);

Нова конфігурація буде об'єднана з існуючою, тому вам потрібно буде лише передати параметри, які ви хочете змінити.

Коли ви використовуєте блочний редактор у Sanity, він створює структуровану структуру масиву, яку можна використовувати для візуалізації вмісту на будь-якій платформі, яку ви бажаєте. У PHP загальний вихідний формат - HTML. Щоб зробити перетворення з масиву в HTML простіше, ми включимо в нього бібліотеку допоміжний клас.

Якщо вміст містить лише основні вбудовані типи блоків, ви можете отримати відображений HTML-код подібним чином:

використання Sanity \ t $ document = $ client-> getDocument ('some-doc'); $ article = $ document ['article']; $ html = BlockContent :: toHtml ($ article, ['projectId' => 'abc123', 'набір даних' => 'bikeshop', 'imageOptions' => ['w' => 320, 'h' => 240] ]);

Якщо у вас є спеціальні типи або ви хочете налаштувати візуалізацію, ви можете передати асоціативний масив серіалізаторів:

$ html = BlockContent :: toHtml ($ article, ['serializers' => ['listItem' => функція ($ item, $ parent, $ htmlBuilder) {return '<li class = "my-list-item"> " implode ('n', $ item ['children']). '</li>';}, 'geopoint' => функція ($ item) {$ attrs = $ item ['attributes'] $ url = 'https://www.google.com/maps/embed/v1/place?key=someApiKey&center=' $ url. = $ attrs ['lat']. ','. $ attrs ['lng']; <iframe class = "geomap" src = "'. $ url.'" allowfullscreen> </iframe> '},' pet '=> функція ($ item, $ parent, $ htmlBuilder) {return' <p class = " $ htmlBuilder-> escape ($ item ['attributes'] ['name']). '</p>';}]]);

sanity-php слідує за PSR-2 Керівництво по стилю кодування . Вклади вітаються, але повинні відповідати цьому стандарту.

Ліцензію MIT. Див. ЛІЦЕНЗІЮ

Com/maps/embed/v1/place?

Новости