ArtifyCrud
Artify cuenta con un completo y muy flexible generador de crud con muy poco código

Ejemplo de Crud Simple
<?php
$artify = DB::ArtifyCrud();
echo $artify->dbTable("tabla_bd")->render();
?>
Popup
<?php
$artify = DB::ArtifyCrud();
$artify->formDisplayInPopup();
echo $artify->dbTable("tabla_bd")->render();
?>
Renombrar Columnas Grilla
<?php
$artify = DB::ArtifyCrud();
$artify->colRename("campo_db", "nuevo_nombre");
echo $artify->dbTable("tabla_bd")->render();
?>
Ocultar Columnas Grilla
<?php
$artify = DB::ArtifyCrud();
$artify->crudRemoveCol(array("campo_bd1", "campo_bd2"));
echo $artify->dbTable("tabla_bd")->render();
?>
Unir Tablas en la Grilla
<?php
$artify = DB::ArtifyCrud();
$artify->joinTable("tabla_secundaria", "tabla_secundaria.id_relacion = tabla_bd.id_relacion", "INNER JOIN");
$artify->joinTable("tabla_secundaria", "tabla_secundaria.id_relacion = tabla_bd.id_relacion", "LEFT JOIN");
echo $artify->dbTable("tabla_bd")->render();
?>
Renombrar Campos en los formularios
<?php
$artify = DB::ArtifyCrud();
$artify->fieldRenameLable("campo_db", "nuevo_nombre");
echo $artify->dbTable("tabla_bd")->render();
?>
Establecer Columnas de Búsqueda
<?php
$artify = DB::ArtifyCrud();
$artify->setSearchCols(array("campo_db1","campo_db2", "etc"));
echo $artify->dbTable("tabla_bd")->render();
?>
Edición en línea
<?php
$artify = DB::ArtifyCrud();
$artify->setSettings("inlineEditbtn", true);
echo $artify->dbTable("tabla_bd")->render();
?>
Filtros avanzados
<?php
$artify = DB::ArtifyCrud();
$artify->addFilter("nombreFiltro", "nombre_filtro_a_mostrar", "campo_bd", "radio");
$artify->setFilterSource("nombreFiltro", array("valor1" => "valor1", "valor2" => "valor2"), "", "", "array");
$artify->addFilter("nombreFiltro2", "nombre_filtro_a_mostrar", "campo_bd", "dropdown");
$artify->setFilterSource("nombreFiltro2", "tabla_bd", "campo_bd", "campo_bd as pl", "db");
$artify->addFilter("nombreFiltro3", "nombre_filtro_a_mostrar", "campo_bd", "text");
$artify->setFilterSource("nombreFiltro3", "", "", "", "");
echo $artify->dbTable("tabla_bd")->render();
?>
Más opciones de formato de tabla Crud
<?php
$artify = DB::ArtifyCrud();
$artify->crudTableCol(array("campo_bd1","campo_bd2","campo_bd3","campo_bd4","campo_bd5"));
// formato de fecha (pasar formato de fecha)
$artify->tableColFormatting("campo_bd", "date",array("format" =>"m-d-Y"));
// convertir a cualquier html como URL o cualquier html con el valor real pasado como {col-name}
$artify->tableColFormatting("campo_bd", "html", array("type" =>"html","str"=>"<div style=\"font-weight:bold\" data-attribute=\"abc-{col-name}\">{col-name}</div>"));
$artify->tableColFormatting("campo_bd", "html", array("type" =>"html", "str"=>"<a href=\"http://www.artify.com/paramater={col-name}\" data-attribute=\"abc-{col-name}\">{col-name}</a>"));
//convertir a columna de imagen
$artify->tableColFormatting("campo_bd", "image");
//Convierte el texto de una columna larga en texto pequeño con leer más
$artify->tableColFormatting("campo_bd", "readmore", array("length"=> 4, "showreadmore"=> true));//no mostrar leer más
//lógica condicional para formatear columnas de tabla - p. ej. aplicar estilo CSS para celdas con precio de producto > 200
$artify->tableDataFormatting("col", "style", array("campo_bd",">", "55"),array("background:#f00","color:#ff0"));
//$artify->tableDataFormatting("row", "style", array("campo_bd",">", "55"),array("background:#000","color:#ff0"));
echo $artify->dbTable("tabla_bd")->render();
?>
Campo no obligatorio
<?php
$artify = DB::ArtifyCrud();
$artify->fieldNotMandatory("campo_db");
echo $artify->dbTable("tabla_bd")->render();
?>
Paginación
<?php
$artify = DB::ArtifyCrud();
$artify->recordsPerPage(12); // muestra cuantos registros serán visibles por página
$artify->currentPage(2); // muestra en que página se cargarán los datos
echo $artify->dbTable("tabla_bd")->render();
?>
Skins
<?php
$artify = DB::ArtifyCrud();
$artify->setSkin("green"); // advance, dark, default, fair, green, hover, pure
echo $artify->dbTable("tabla_bd")->render();
?>
Formulario de Inserción
<?php
$artify = DB::ArtifyCrud();
echo $artify->dbTable("tabla_bd")->render("insertform");
?>
Formulario de Edición
<?php
$artify = DB::ArtifyCrud();
$artify->setPK("id"); // primarykey de la tabla actual
echo $artify->dbTable("tabla_bd")->render("editform", array("id" =>"58"));
?>
Formulario de vista
<?php
$artify = DB::ArtifyCrud();
$artify->setPK("id"); // primarykey de la tabla actual
echo $artify->dbTable("tabla_bd")->render("viewform", array("id" =>"58"));
?>
Vista de formulario con columnas específicas
<?php
$artify = DB::ArtifyCrud();
$artify->setPK("id");
$artify->setViewColumns(array("campo_db1","campo_db2","campo_db3"));
echo $artify->dbTable("tabla_bd")->render("viewform", array("id" =>"58"));
?>
Ocultar Botones de formulario
<?php
$artify = DB::ArtifyCrud();
$artify->buttonHide("submitBtnSaveBack"); // ocultar botón de guardar y regresar
$artify->buttonHide("submitBtnBack"); // ocultar botón regresar
$artify->buttonHide("submitBtn"); // ocultar botón guardar
$artify->buttonHide("cancel"); // ocultar botón cancelar
echo $artify->dbTable("tabla_bd")->render();
?>
Agregar condición where en los botones de acción
<?php
$artify = DB::ArtifyCrud();
$artify->addWhereConditionActionButtons("edit", "campo_bd", "!=", array(76778)); // oculta el botón edit si se cuemple la condición
echo $artify->dbTable("tabla_bd")->render();
?>
Crear Botones de formulario Personalizados
<?php
$artify = DB::ArtifyCrud();
$artify->buttonHide("submitBtnSaveBack"); // ocultar botón de guardar y regresar
$artify->buttonHide("submitBtnBack"); // ocultar botón regresar
$artify->buttonHide("submitBtn"); // ocultar botón guardar
$artify->buttonHide("cancel"); // ocultar botón cancelar
$artify->formStaticFields("botones", "html", '
<div class="row">
<div class="col-md-12">
<div class="row mt-4">
<div class="col-md-12 text-center">
<button type="button" class="btn btn-danger artify-form-control artify-button artify-back regresar_modulos" data-action="back">Regresar</button>
<input type="submit" class="btn btn-primary artify-form-control artify-submit" data-action="insert" value="Guardar">
</div>
</div>
</div>
</div>
');
echo $artify->dbTable("tabla_bd")->render();
?>
Campo Captcha
<?php
$artify = DB::ArtifyCrud();
$artify->formAddCaptcha("captcha");
echo $artify->dbTable("tabla_bd")->render();
?>
Ordenar Por
<?php
$artify = DB::ArtifyCrud();
$artify->dbOrderBy("campo_db desc");//desendente
//$artify->dbOrderBy(array("campo_db1 desc","campo_db2 desc"));
echo $artify->dbTable("tabla_bd")->render();
?>
Clonar Filas
<?php
$artify = DB::ArtifyCrud();
$artify->setSettings("clonebtn", true);
echo $artify->dbTable("tabla_bd")->render();
?>
Campo ReCaptcha
<?php
$artify = DB::ArtifyCrud();
$artify->recaptcha("your-site-key","site-secret");
echo $artify->dbTable("tabla_bd")->render("insertform");
?>
Clases y Atributos de Campo
<?php
$artify = DB::ArtifyCrud();
$artify->fieldCssClass("campo_db", array("class1", "class2"));
$artify->fieldAttributes("campo_db", array("data-type"=>"some_val"));
$artify->fieldAttributes("campo_db", array("placeholder"=>"name of customer"));
$artify->fieldAttributes("campo_db", array("placeholder"=>"status of order"));
echo $artify->dbTable("tabla_bd")->render("insertform");
?>
Operaciones de Datos sin procesar
<?php
$artify = DB::ArtifyCrud();
$insertData = array("customer_name" => "bob", "email" => "builder@gmail.com", "postal_code" =>99423);
$artify->getQueryfyObj()->insert("customertable", $insertData);
//operacion de actualización
//Ejemplo 2
$updateData = array("first_name"=>"Jon", "last_name"=>"snow", "email"=>"builder@gmail.com");
$pdomodel = $artify->getQueryfyObj();
$pdomodel->where("id", 1);
$pdomodel->update("feedback", $updateData);
//Ejemplo 3
//operación de selección
$data = $artify->getQueryfyObj()->select("orders");
print_r($data);
?>
Actualización masiva de registros
<?php
$artify = DB::ArtifyCrud();
//$artify->bulkCrudUpdate("campo_db", "textarea",array("data-some-attr" =>"some-dummy-val"));
$artify->bulkCrudUpdate("campo_db", "text",array("data-some-attr" =>"some-dummy-val"));
$artify->bulkCrudUpdate("campo_db", "select", array("data-cust-attr" =>"some-cust-val"), array(
array(
"Xenos Clarke",
"Xenos Clarke"
),
array(
"Cooper Jensen",
"Cooper Jensen"
),
array(
"Deacon Tyson",
"Deacon Tyson"
)));
$artify->setSettings("actionbtn", false);
$artify->setSettings("checkboxCol", false);
echo $artify->dbTable("tabla_bd")->render();
// ejemplo 2
// Obtener los nombres para el select desde BD
$query = DB::Queryfy();
$rows = $query->select("usuarios"); // o con where, orden, etc
$options = [];
foreach ($rows as $row) {
$options[] = [$row['nombre'], $row['nombre']];
}
$artify = DB::ArtifyCrud();
$artify->bulkCrudUpdate("campo_db", "text", array("data-some-attr" => "some-dummy-val"));
$artify->bulkCrudUpdate("campo_db", "select", array("data-cust-attr" => "some-cust-val"), $options);
$artify->setSettings("actionbtn", false);
$artify->setSettings("checkboxCol", false);
echo $artify->dbTable("tabla_bd")->render();
?>
Datos relacionados
<?php
$artify = DB::ArtifyCrud();
$artify->relatedData('campo_bd','tabla_secundaria','id_tabla_secundaria','campo_tabla_secundaria');
echo $artify->dbTable("tabla_bd")->render();
?>
Devoluciones de Llamada PHP
<?php
$artify = DB::ArtifyCrud();
$artify->addCallback("after_insert", [$this, "afterInsertCallBack"]); // accion que se activa despues de insertar los datos
$artify->addCallback("after_update", [$this, "afterUpdateCallBack"]); // accion que se activa despues de actualizar los datos
$artify->addCallback("before_table_data", [$this, "beforeTableDataCallBack"]); // accion que se activa al realizar una accion de busqueda, paginación o filtro
$artify->addCallback("format_table_data", [$this, "formatTableDataCallBack"]);
$artify->addCallback("format_table_col", [$this, "formatTableColCallBack"]);
$artify->addCallback("after_table_data", [$this, "afterTableDataCallBack"]);
$artify->addCallback("format_sql_data", [$this, "formatSQLDataCallBack"]);
$artify->addCallback("before_sql_data", [$this, "beforeSQLDataCallBack"]);
$artify->addCallback("before_switch_update", [$this, "beforeSwitchUpdateCallBack"]);
$artify->addCallback("before_insert_form", [$this, "beforeInsertForm"]);
$artify->addCallback("after_insert_form", [$this, "afterInsertForm"]);
$artify->addCallback("before_edit_form", [$this, "beforeEditForm"]);
$artify->addCallback("after_edit_form", [$this, "afterEditForm"]);
$artify->addCallback("before_view_form", [$this, "beforeViewForm"]);
$artify->addCallback("after_view_form", [$this, "afterViewForm"]);
$artify->addCallback("before_select_form", [$this, "beforeSelectForm"]);
$artify->addCallback("after_select_form", [$this, "afterSelectForm"]);
$artify->addCallback("before_email_form", [$this, "beforeEmailForm"]);
$artify->addCallback("after_email_form", [$this, "afterEmailForm"]);
$artify->addCallback("before_select", [$this, "beforeSelect"]);
$artify->addCallback("after_select", [$this, "afterSelect"]);
$artify->addCallback("before_insert", [$this, "beforeInsert"]);
$artify->addCallback("after_insert", [$this, "afterInsert"]);
$artify->addCallback("before_update", [$this, "beforeUpdate"]);
$artify->addCallback("after_update", [$this, "afterUpdate"]);
$artify->addCallback("before_delete", [$this, "beforeDelete"]);
$artify->addCallback("after_delete", [$this, "afterDelete"]);
$artify->addCallback("before_switch_update", [$this, "beforeSwitchUpdate"]);
$artify->addCallback("after_switch_update", [$this, "afterSwitchUpdate"]);
?>
Ejemplo de uso de Devoluciones de Llamada PHP
<?php
namespace App\Controllers;
use App\core\DB;
use App\core\ArtifyStencil;
use App\core\Request;
class UserController
{
public function show() {
$settings["script_url"] = $_ENV['URL_ArtifyCrud'];
$_ENV["url_artify"] = "artify/artifycrud.php";
$settings["url_artify"] = $_ENV["url_artify"];
$settings["downloadURL"] = $_ENV['DOWNLOAD_URL'];
$settings["hostname"] = $_ENV['DB_HOST'];
$settings["database"] = $_ENV['DB_NAME'];
$settings["username"] = $_ENV['DB_USER'];
$settings["password"] = $_ENV['DB_PASS'];
$settings["dbtype"] = $_ENV['DB_TYPE'];
$settings["characterset"] = $_ENV["CHARACTER_SET"];
$autoSuggestion = false;
$artify = DB::ArtifyCrud(false, "", "", $autoSuggestion, $settings);
$artify->addCallback("before_insert", [$this, "insertar_data"]);
$render = $artify->dbTable("tabla_bd")->render();
$stencil = new ArtifyStencil();
echo $stencil->render("nombre_vista", [
'render' => $render
]);
}
public function insertar_data($data, $obj){
print_r($data);
die();
return $data;
}
}
?>
Mas Ejemplos de uso de Devoluciones de Llamada para filtros avanzados personalizados
<?php
namespace App\Controllers;
use App\core\DB;
use App\core\ArtifyStencil;
use App\core\Request;
class UserController
{
public function show() {
$settings["script_url"] = $_ENV['URL_ArtifyCrud'];
$_ENV["url_artify"] = "artify/artifycrud.php";
$settings["url_artify"] = $_ENV["url_artify"];
$settings["downloadURL"] = $_ENV['DOWNLOAD_URL'];
$settings["hostname"] = $_ENV['DB_HOST'];
$settings["database"] = $_ENV['DB_NAME'];
$settings["username"] = $_ENV['DB_USER'];
$settings["password"] = $_ENV['DB_PASS'];
$settings["dbtype"] = $_ENV['DB_TYPE'];
$settings["characterset"] = $_ENV["CHARACTER_SET"];
$autoSuggestion = false;
$artify = DB::ArtifyCrud(false, "", "", $autoSuggestion, $settings);
$artify->setSettings("function_filter_and_search", false); // desactivamos la funcion de busqueda y filtros
$artify->setSettings("actionFilterPosition", "top"); // elegimos donde queremos mostrar el filtro las opciones son top, left, right
// definimos los filtros
$artify->addFilter("FechaDesde", "Filtrar por Fecha Desde", "fecha", "date");
$artify->setFilterSource("FechaDesde", "", "", "", "");
$artify->addFilter("FechaHasta", "Filtrar por Fecha Hasta", "fecha", "date");
$artify->setFilterSource("FechaHasta", "", "", "", "");
// aplicamos el callback que hara funcionar el filtro
$artify->addCallback("before_table_data", [$this, "filtrar_pacientes_suspendidos"]);
// o de esta forma y se crea como metodo publico $artify->addCallback("before_table_data", [$this, "filtrar_pacientes_suspendidos"]);
$render = $artify->dbTable("tabla_bd")->render();
$stencil = new ArtifyStencil();
echo $stencil->render("nombre_vista", [
'render' => $render
]);
}
// creamos el metodo encargado de gestionar el filtro
public function filtrar_pacientes_suspendidos($data, $obj){
if (isset($data["action"]) && $data["action"] == "filter") {
// Limpiar las condiciones WHERE anteriores
$obj->clearWhereConditions();
// Verificar si 'FechaDesdeFilter' y 'FechaHastaFilter' están presentes en $data
$fechaDesde = isset($data['FechaDesde']) ? $data['FechaDesde'] : null;
$fechaHasta = isset($data['FechaHasta']) ? $data['FechaHasta'] : null;
if (empty($fechaDesde) && empty($fechaHasta)) {
$obj->where('id', "NULL");
}
if (!empty($fechaDesde) && !empty($fechaHasta)) {
$obj->where("estado_1", "Suspendido", "=", "AND");
$obj->where('fecha', $fechaDesde, ">=", "AND");
$obj->where('fecha', $fechaHasta, "<=", "AND");
} elseif (!empty($fechaDesde) && empty($fechaHasta)) {
$obj->where("estado_1", "Suspendido", "=", "AND");
$obj->where('fecha', $fechaDesde, "=");
} elseif (empty($fechaDesde) && !empty($fechaHasta)) {
$obj->where("estado_1", "Suspendido", "=", "AND");
$obj->where('fecha', $fechaHasta, "=");
}
}
return $data;
}
}
?>
Botones personalizados en la columna acciones de la grilla
<?php
$artify = DB::ArtifyCrud();
$action = "javascript:;"; // evento javascript que tambien puede ser asi con parámetros $action = "http://google.com/?id={booking_Id}&name={first_name}";
$text = 'Crear'; // nombre del botón a mostrar o icono ejemplo: <i class='fa fa-edit'></i>
$attr = array("title"=>"Crear"); // titulo al pasar mouse por encima del botón
$artify->enqueueBtnActions("artify-actions", $action, "edit", $text, "", $attr); // acá el tercer parametro puede ser view, edit, delete o clone
echo $artify->dbTable("tabla_db")->render("insertform");
?>
Reglas de validaciones de campos de formularios
<?php
$artify = DB::ArtifyCrud();
$artify->fieldValidationType("campo_db", "data-minlength", "10", "Por favor, introduzca al menos 10 caracteres.");
$artify->fieldValidationType("password", "data-match", "confirm_password", "La contraseña y la confirmación de contraseña no coinciden");
$artify->formStaticFields("confirm_password", "text");
echo $artify->dbTable("tabla_db")->render("insertform");
?>
Campos de Imagen
<?php
$artify = DB::ArtifyCrud();
$artify->fieldTypes("campo", "IMAGE");
echo $artify->dbTable("tabla_db")->render("insertform");
?>
Campos de Archivo1
<?php
$artify = DB::ArtifyCrud();
$artify->fieldTypes("campo", "FILE_NEW");
echo $artify->dbTable("tabla_db")->render("insertform");
?>
Campos de Archivo2
<?php
$artify = DB::ArtifyCrud();
$artify->fieldTypes("campo", "FILE");
echo $artify->dbTable("tabla_db")->render("insertform");
?>
Campos de Multiples Archivos
<?php
$artify = DB::ArtifyCrud();
$artify->fieldTypes("campo", "FILE_MULTI");
echo $artify->dbTable("tabla_db")->render("insertform");
?>
Plantillas Personalizadas en los formularios
<?php
$artify = DB::ArtifyCrud();
$template = '
<div class="card">
<div class="card-header bg-dark">
Registro Médico
</div>
<div class="card-body">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="form-label">Paciente</label>
<input type="text" class="form-control" value="">
<p class="artify_help_block help-block form-text with-errors"></p>
</div>
</div>
</div>
</div>
</div>';
$artify->set_template($template);
echo $artify->dbTable("tabla_db")->render("insertform");
?>
Configuraciones de Campos
<?php
$artify = DB::ArtifyCrud();
$artify->setSettings("template", "nombre_template");
$artify->setSettings("refresh", false);
$artify->setSettings("pagination", false);
$artify->setSettings("searchbox", false);
$artify->setSettings("deleteMultipleBtn", false);
$artify->setSettings("recordsPerPageDropdown", false);
$artify->setSettings("totalRecordsInfo", false);
$artify->setSettings("addbtn", false);
$artify->setSettings('clonebtn', false);
$artify->setSettings("editbtn", false);
$artify->setSettings("viewbtn", false);
$artify->setSettings("delbtn", false);
$artify->setSettings("actionbtn", false);
$artify->setSettings("checkboxCol", false);
$artify->setSettings("numberCol", false);
$artify->setSettings("printBtn", false);
$artify->setSettings("pdfBtn", false);
$artify->setSettings("csvBtn", false);
$artify->setSettings("excelBtn", false);
$artify->setSettings("inlineEditbtn", false);
$artify->setSettings("hideAutoIncrement", false);
$artify->setSettings("required", false);
$artify->setSettings("encryption", false);
$artify->setSettings("function_filter_and_search", false);
$artify->setSettings("actionFilterPosition", "top");
$artify->setSettings("actionBtnPosition", "right");
$artify->setSettings("tableCellEdit", false);
$artify->setSettings("showUploadedImage", false);
echo $artify->dbTable("tabla_db")->render("insertform");
?>
Crud a base de una Consulta SQL
<?php
namespace App\Controllers;
use App\core\ArtifyStencil;
class MiClase {
public function micrud(){
$artify = DB::ArtifyCrud();
$artify->addCallback("before_delete", [$this, "eliminar_users"]);
$artify->setSettings("addbtn", false);
$artify->setSettings("editbtn", false);
$artify->setSettings("delbtn", true);
$artify->setSettings("sortable", false);
$artify->setSettings("searchbox", true);
$artify->setSettings("function_filter_and_search", false);
$artify->enqueueBtnTopActions("Report", "<i class='fa fa-plus'></i> Agregar", $_ENV["BASE_URL"]."agregar", array(), "btn-report");
$tabla = "tabla_db";
$columns = "user_id, CONCAT(first_name,' ',last_name) as complete, user_name, email";
$pk = "user_id"; // campo autoincrementable de tu tabla
$artify->setQueryPagination("SELECT COUNT(user_id) AS totalrecords FROM $tabla");
$artify->setQuery($tabla, $columns, $pk);
$artify->addCallback("before_sql_data", [$this, "search_users"]);
$artify->formFields(array("user_name", "email"));
$artify->formStaticFields("button", "html", "
<div class="row text-center">
<div class="col-md-12">
<input type="submit" class="btn btn-primary artify-form-control artify-submit mb-3" data-action="insert" value="Guardar">
<button type="button" class="btn btn-danger artify-form-control artify-button mb-3 artify-back" data-action="back" data-rendertype="SQL" data-dismiss="modal">Regresar</button>
<button type="button" class="btn btn-danger artify-form-control artify-button mb-3 artify-cancel-btn">Cancelar</button>
</div>
</div>
");
$artify->colRename("CONCAT(first_name,' ',last_name) as complete", "Complete");
$artify->crudTableCol(array("user_id", "CONCAT(first_name,' ',last_name) as complete", "user_name", "email"));
$render = $artify->render("SQL");
$stencil = new ArtifyStencil();
echo $stencil->render("vista", [
'render' => $render
]);
}
public function search_users($data, $obj){
// Tu lógica de búsqueda acá
if (isset($data["action"]) && $data["action"] === "search") {
if (isset($data['search_col']) && isset($data['search_text'])) {
$search_col = $data['search_col'];
$search_text = $data['search_text'];
if ($search_col !== 'all') {
// Si la columna no es 'all', generar WHERE para esa columna
if($search_col == "complete"){
$query = " WHERE CONCAT(first_name,' ',last_name) LIKE '%$search_text%'";
} else {
$query = " WHERE $search_col LIKE '%$search_text%'";
}
$obj->setQuery("users", "user_id, CONCAT(first_name,' ',last_name) as complete, user_name, email", "user_id", $query);
} else if ($search_col === 'all' && !empty($search_text)) {
// Si la columna es 'all' y el texto de búsqueda no está vacío
$query = " WHERE CONCAT(first_name, ' ', last_name) LIKE '%$search_text%' OR
user_id LIKE '%$search_text%' OR
user_name LIKE '%$search_text%' OR
email LIKE '%$search_text%'";
$obj->setQuery("users", "user_id, CONCAT(first_name,' ',last_name) as complete, user_name, email", "user_id", $query);
} else if ($search_col === 'all' && empty($search_text)) {
// Si la columna es 'all' y el texto de búsqueda está vacío, eliminar WHERE
$query = ""; // Sin filtro
$obj->setQuery("users", "user_id, CONCAT(first_name,' ',last_name) as complete, user_name, email", "user_id", $query);
}
}
}
return $data;
}
public function eliminar_users($data, $obj){
// Tu lógica de eliminación acá
$id = $data["id"];
if (!empty($id)) {
$pdomodel->where($pk, $id);
$pdomodel->delete("tabla");
}
return $data;
}
}
?>
Devoluciones de Llamada JS
ArtifyCrud contiene numerosos eventos de JavaScript personalizados que se activan en distintos puntos. Puedes agregar estos eventos para realizar diversas operaciones relacionadas con JavaScript. Para ejecutar una función de JavaScript personalizada después de cargar el script, utilice el evento “artify_on_load”.
jQuery(document).trigger("artify_on_load", [this]);
Para ejecutar una función de JavaScript personalizada antes de las acciones Ajax, utilice el evento “artify_before_ajax_action”.
jQuery(document).trigger("artify_before_ajax_action", [obj, data]);
Para ejecutar una función de JavaScript personalizada después de las acciones ajax, utilice el evento “artify_after_ajax_action”.
jQuery(document).trigger("artify_after_ajax_action", [obj, response]);
Para ejecutar una función de JavaScript personalizada después del envío del formulario, utilice el evento “artify_after_submission”.
jQuery(document).trigger("artify_after_submission", [obj, responseText]);
Solo necesita agregar el evento requerido y los datos asociados en la función de evento. Tenga en cuenta que el disparador de JavaScript no devuelve ningún dato, pero puede usarlo para realizar la operación requerida. A continuación, se muestra un ejemplo del uso del disparador "artify_before_ajax_action". Puede usar console.log para verificar los datos y el objeto.
jQuery(document).ready(function () {
jQuery(document).on("artify_before_ajax_action", function(event, obj, data){
console.log(obj);
console.log(data);
});
});
Ejemplo de como separar las operaciones con la devolución de llamada de js
jQuery(document).on("artify_after_ajax_action", function(event, obj, data){
var dataAction = obj.getAttribute('data-action');
var dataId = obj.getAttribute('data-id');
if(dataAction == "add"){
// tu lógica acá
}
if(dataAction == "edit"){
// tu lógica acá
}
if(dataAction == "delete"){
// tu lógica acá
}
});
Ejemplo de devolucion de llamada después de guardar los datos
jQuery(document).on("artify_after_submission", function(event, obj, data) {
let json = JSON.parse(data);
if (json.message) {
Swal.fire({
icon: "success",
text: json["message"],
confirmButtonText: "Aceptar",
allowOutsideClick: false
}).then((result) => {
if (result.isConfirmed) {
jQuery(".artify-back").click();
}
});
}
});