import Cart from './components/Cart'
import EventBus from './common/event-bus.js';
var app = new Vue({
el: '#app',
components: {
Cart
},
mounted() {
document.addEventListener('click', addProduct, false);
function addProduct(event) {
if (event.target.classList.contains('btnToCart')) {
EventBus.$emit('changeCart', 'твой атрибут сюда');
}
}
}
})
import EventBus from '../common/event-bus.js'
export default {
data() {
return {
content: {}
};
},
mounted() {
EventBus.$on('changeCart', array => {
this.addProduct(array);
});
},
created() {
},
methods: {
addProduct(newItem){
console.log(newItem)
},
}
}
<div class="product" v-for="item in poducts" :key="item.id">
<div class="product__name">{{ item.name }}</div>
<button @click="test(item.id)">кнопка</button>
</div>
, компилировать это на лету и монтировать как компонент.<div v-html="свойствоСодержащееHTML" @click="onClick">
methods: {
onClick(e) {
if (e.target.tagName === 'BUTTON') {
const id = e.target.closest('.product').dataset.id;
...
}
},
...
},
<b></b>
<?php
/** @var array $scriptProperties */
/** @var pdoFetch $pdoFetch */
$fqn = $modx->getOption('pdoFetch.class', null, 'pdotools.pdofetch', true);
$path = $modx->getOption('pdofetch_class_path', null, MODX_CORE_PATH . 'components/pdotools/model/', true);
if ($pdoClass = $modx->loadClass($fqn, $path, false, true)) {
$pdoFetch = new $pdoClass($modx, $scriptProperties);
} else {
return false;
}
$pdoFetch->addTime('pdoTools loaded');
$modx->log(1, 'test: ' . $test);
$modx->log(1, 'array: ' . print_r($array, 1));
// Подключаем
define('MODX_API_MODE', true);
require $_SERVER['DOCUMENT_ROOT'].'/index.php';
// Включаем обработку ошибок
$modx->getService('error','error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_INFO);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');
//Проверяем работу:
if ($res = $modx->getObject('modResource', 1)) {
print_r($res->toArray());
}
Веб-сервер выполняет только один однопоточный процесс, поэтому приложения PHP будут останавливаться, если запрос заблокирован.
localhost:4000/handler.php
потому-что для начала ему нужно завершить запрос к файлу где у вас выводится file_get_contents()
. В то-же время он не может завершить запрос к файлу с file_get_contents()
потому-что для этого нужно завершить запрос к localhost:4000/handler.php
, в итоге сервер висит.1) В чем смысл фрейморков?За тебя уже все написано. Каркас, CRUD/ORM и масса плюшек.
2) Какой учить первый?никто не даст ответа. Индустрия сходит с ума, территория PHP проклята - одному работодателю нужен один фреймворк, другому - другой. Угнаться за всем этим - нереально. В идеале - искать работодателей, готовых вас "вырастить", т.е. взять лишь с минимальным набором знаний, например, теоретических. Все фреймворки знать невозможно. А если и возможно, то это лишь временно - нереально всю жизнь знать все возможности десятка пхпшных фреймворков.
3) Почему способ с самописным роутером, плохой?Фреймворк - это не только роутер. Можно перефразировать вопрос и спросить:
Почему способ с самописным фреймворком плохой?Самописный фреймворк - это не плохо. Как получение опыта - очень даже хорошо. Для себя можешь писать. Но что бы в команду устроиться работать, тебе твой фрейм самописный не поможет. Команде нужна унификация, для этого и существуют фреймворки.
Думаю если немного его усложнить, то и с более сложными проектами справится.бесспорно. реально справится. только он будет заточен только под тебя. и будет ограничен функционал - тебе не хватит жизни, что бы написать то, что делают команды фанатиков.
The Browser Object Model (BOM) allows JavaScript to "talk to" the browser.
$k = array_keys($arr);
$v = array_values($arr);
sort($k);
sort($v);
$arr = array_combine($k, $v);
mb_strtoupper()
. Почему не работает? Видимо на это настройки не распространяются и многобайтовая кодировка не стыкуется с однобайтовой.